user3429660:
どのように私は、一般的な中で、「列挙型」の値を得ることができますか?
public class Sorter<T extends Enum<?>> {
public Sorter() {
T[] result = T.values(); // <- Compilation error
}
}
一方、私は、列挙型クラスの()の値を照会することができます:
enum TmpEnum { A, B }
public class Tmp {
void func() {
T[] result = TmpEnum.values(); // <- It works
}
}
1月トーマ:
Class::getEnumConstants
あなたは直接からそれを得ることができないT
ジェネリック医薬品がされているので、消去、それはもはや何知られていないので、実行時にJavaコンパイラですT
。
あなたにできることは必要であるClass<T>
、コンストラクタのパラメータとしてオブジェクトを。そこから呼び出すことによって、列挙型オブジェクトの配列を取得することができますClass::getEnumConstants
。
public class Sorter<T extends Enum<T>> {
public Sorter(Class<T> clazz) {
final T[] enumConstants = clazz.getEnumConstants();
}
}