假设我有两个构造函数接受某种类型的输入。 (本例中为 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/