Reimeusの答えは+1 。ただし、親型を使用してリストを宣言したままにしておきたい場合はException
、これが(Java 7構文を使用して)思いつくことができる最善の方法です。
private static final List<Class<? extends Exception>> SOME_ERRORS = new ArrayList<>();
static{
SOME_ERRORS.add(NumberFormatException.class);
SOME_ERRORS.add(NullPointerException.class);
}
問題はArrays.asList
、適切なリストタイプを自動的に決定することによるものです。比較すると、これもエラーなしで機能します。
private static final List<Class<? extends Exception>> SOME_ERRORS = Arrays.asList(NumberFormatException.class, NullPointerException.class, Exception.class);
特に「定数」(s)を扱うstatic final
場合は、通常、そのような配列/コレクションを変更できないようにすることをお勧めします。最悪の場合、これにより、いくつかの困難な問題が発生するのを防ぐことができます。例えば:
private static final List<Class<? extends Exception>> SOME_ERRORS;
static{
List<Class< ? extends Exception>> errors = new ArrayList<>();
errors.add(NumberFormatException.class);
errors.add(NullPointerException.class);
SOME_ERRORS = Collections.unmodifiableList(errors);
}