java - 重载构造函数根据输入类型调用其他构造函数

标签 java constructor

假设我有两个构造函数接受某种类型的输入。 (本例中为 T1 和 T2)

我想从一个更通用的构造函数中调用它们中的任何一个,该构造函数采用一个对象(或 T1 和 T2 的任何父类(super class))

class Test{
    public Test(T1 input){...}
    public Test(T2 input){...}

    public Test(Object input){
        if(input instanceof T1)
            this((T1) input);
        if(input instanceof T2)
            this((T2) input);
}

第三个构造函数会给出编译错误,因为 this 构造函数调用不在第一行。

最佳答案

您可以使用一种工厂方法,如下所示:

public class Test {
    private Test(T1 input) {
        // ...
    }

    private Test(T2 input) {
        // ...
    }

    public static Test createTest(Object input) {
       if (input instanceof T1)
          return new Test((T1) input);
       if (input instanceof T2)
          return new Test((T2) input);
        return null;
    }
}

关于java - 重载构造函数根据输入类型调用其他构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37499450/

相关文章:

c# - 创建新的设置实例

java - 构造函数是 OOP 的哪一部分?

java - 使用 Ivy 指定传递依赖关系

java - Maven 在 Central 中搜索本地可用的 Artifact

java - 致命异常 : main, 能够启动 Activity ComponentInfo,java.lang.IndexOutOfBoundsException

python - 将参数传递给基类构造函数或使用实例变量?

java - 如何创建一个重复函数的方法?

java - JTable 仅显示 Mysql 中的一行

Java:构造函数 gerbil(int) 未定义

c++ - 使用另一个类的函数指针