在我的程序中,我希望能够基于我初始化的构造函数访问某些方法,而不是其他任何方法。例如:
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
}
}
在给出的代码中,有没有办法实现我在评论和问题中描述的内容?如果是这样,你能描述一下这样做吗?
答案 0 :(得分:2)
根据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) {
...
}
}
答案 1 :(得分:0)
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
变量。
答案 2 :(得分:0)
我不确定这是否对您有直接帮助,但它可能对您有所帮助。
我建议使用这样的通用类。
public class A<T> {
public A(final T t) {
}
public void method(final T t) {
}
}
如果您不知道如何使用泛型类,那么这是一个例子
final A<Integer> aInteger = new A<Integer>(1);
final A<Float> aFloat = new A<Float>(5.4f);
希望这有帮助!