返回实现接口的java类的类型

时间:2012-10-16 12:09:16

标签: java class generics types return

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

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

1 个答案:

答案 0 :(得分:3)

我的猜测(鉴于缺乏信息)是你试图这样做:

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

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

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

然后

Class<? extends A> clazz = getType();
A instance = clazz.newInstance();