2

我有一个标志告诉我要使用哪种类类型。应该使用静态方法来检索正确的类。需要类类型作为泛型方法的输入。

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]);
}
4

1 回答 1

4

我的猜测(鉴于缺乏信息)是您正在尝试这样做:

Class clazz = getType();
A instance = clazz.newInstance();

如果是这种情况,你需要这个......

public Class<? extends A> getType(){...}

进而

Class<? extends A> clazz = getType();
A instance = clazz.newInstance();
于 2012-10-16T12:18:57.740 回答