どのように私は、一般的な中で、「列挙型」の値を得ることができますか?

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=226278&siteId=1