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?是的,我一直这样做,但我想没有其他方法。想想看,我可能可以实现一个接口或扩展一个抽象类来实现其余的功能。谢谢。在你的问题中,我看不到你的方法的实现,这就是为什么犹豫不提出抽象类。。。!!!是的,只是一个简单的例子,不是全部代码。应该更清楚了,对不起。谢谢你的建议,但我不想为此使用泛型。然而,这是一个很好的建议。