使用するクラス タイプを示すフラグがあります。適切なクラスを取得するには、静的メソッドを使用する必要があります。クラス型は、ジェネリック メソッドの入力として必要です。
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]);
}