Java 基于提供的构造函数的访问方法
在我的程序中,我希望能够基于我初始化的构造函数访问某些方法,而不是其他方法。例如:Java 基于提供的构造函数的访问方法,java,constructor,Java,Constructor,在我的程序中,我希望能够基于我初始化的构造函数访问某些方法,而不是其他方法。例如: public class A { int paramOne; float paramTwo; public A(int paramOne) { // Constructor One } public A(float paramTwo) { // Constructor Two } public void Construc
public class A {
int paramOne;
float paramTwo;
public A(int paramOne) {
// Constructor One
}
public A(float paramTwo) {
// Constructor Two
}
public void ConstructorOneMethodOnly(int paramOne) {
// Only used when Constructor One is initialized
}
public void ConstructorTwoMethodOnly(float paramTwo) {
// Only used when Constructor Two is initialized
}
}
在给出的代码中,是否有一种方法可以实现我在评论和问题中描述的内容?如果是,你能描述一下如何做到这一点吗
public class A {
int paramOne;
float paramTwo;
int constr = 0;
public A(int paramOne) {
// Constructor One
constr = 1;
}
public A(float paramTwo) {
// Constructor Two
constr = 2;
}
}
并在调用方法之前检查
constr
变量。根据Sotirios Delimanolis的评论,您不能基于所使用的构造函数限制方法的可访问性
我认为这个逻辑应该分为两类,这是我能找到的更清晰的实现
public class IntDemo {
int paramOne;
public IntDemo (int paramOne) {
...
}
public void ConstructorOneMethodOnly(int paramOne) {
...
}
}
class FloatDemo {
float paramTwo;
public FloatDemo(float paramTwo) {
...
}
public void ConstructorTwoMethodOnly(float paramTwo) {
...
}
}
我不确定这是否直接帮助你,但它可能会帮助你,甚至更多 我建议使用这样的泛型类
public class A<T> {
public A(final T t) {
}
public void method(final T t) {
}
}
公共A类{
公共A(最终T){
}
公共无效法(最终T){
}
}
如果您不知道如何使用泛型类,这里有一个exmaple
final A<Integer> aInteger = new A<Integer>(1);
final A<Float> aFloat = new A<Float>(5.4f);
final A aInteger=新A(1);
最终A漂浮=新A(5.4f);
希望这有帮助 不,不能基于用于创建对象的构造函数限制方法的可访问性。啊,bummer,这不好/我同意@Sotirios所说的。尽管如此,您可以在各自的构造函数中调用相应的方法。这是我看到的解决这类问题的唯一方法。2节课可能是最好的方法,或者泛型,如果区别只是int/float,为什么这个问题是-1?是的,我一直这样做,但我想没有其他方法。想想看,我可能可以实现一个接口或扩展一个抽象类来实现其余的功能。谢谢。在你的问题中,我看不到你的方法的实现,这就是为什么犹豫不提出抽象类。。。!!!是的,只是一个简单的例子,不是全部代码。应该更清楚了,对不起。谢谢你的建议,但我不想为此使用泛型。然而,这是一个很好的建议。