我有一个标志告诉我要使用哪种类型。应该使用静态方法来检索正确的类。需要类类型作为泛型方法的输入。
public class Config{
public static int flag = 1;
}
public interface A {
public abstract int getResult();
}
public class A1 implements A{
public int getResult{
// ...
}
}
public class A2 implements A{
public int getResult{
// ...
}
}
public class AType{
public static Class getType(){
switch (Config.flag) {
case 1:
return A1.class;
case 2:
return A2.class;
default:
return null;
}
}
“getType()”的返回类型错误。我已经尝试了一些泛型返回类型,但因为它似乎不能像那样检索类类型以供进一步使用...
如何根据配置标志返回不同的类类型?
我需要类类型(A1或A2)作为通用方法的输入,如下所示:
public static <T extends Message> T[] getArrayFromStream(DataInputStream in, Class<T> returnType)
throws IOException {
return getArrayFromStream(in, returnType, new Object[0]);
}
答案 0 :(得分:3)
我的猜测(鉴于缺乏信息)是你试图这样做:
Class clazz = getType();
A instance = clazz.newInstance();
如果是这种情况,你需要这个......
public Class<? extends A> getType(){...}
然后
Class<? extends A> clazz = getType();
A instance = clazz.newInstance();