我想要一个返回泛型类型的方法。让我们说我有一个父类和10个子类。父类没有定义任何方法,子类具有不同的功能(没有共同的功能)。我想根据一些输入创建子类的对象。 (因为我无法调用类的方法,所以无法创建父对象)。所以我想编写一个在其中创建对象并在main函数中返回的函数。我想把T作为返回类型。我如何从main调用。
public static <T> T fun() {
if (some condition) {
return new Class1();
} else {
return new Class2();
}
}
如何调用函数以获得正确的类?
Class xyz = fun();
答案 0 :(得分:0)
您应该将Class类型作为参数传递给您要用作响应的
public <T> T getAsObject(Class<T> clazz) {
T bean = null;
try {
// do whatever you want to assign bean
} catch (Exception e) {
try {
bean = clazz.newInstance();
} catch (Exception ex) {
// some log
}
}
return bean;
}
因此,您可以将它用于从用作参数
的类继承它的类例如:
public abstract class Parent {
public Parent() {
}
public abstract void doit();
}
public class Child1 extends Parent {
@Override
public void doit() {
// do something
}
}
public class Child2 extends Parent {
@Override
public void doit() {
// do other something
}
}
现在您可以像这样使用它:
Parent parent = getAsObject(Child1.class);
// or
Parent parent2 = getAsObject(Child2.class);