Java 7 を使用すると、なぜ次のような問題が発生するのですか
final List<String> a = new ArrayList<>() {
{
add("word");
}
};
のように明示的な型宣言が必要です。
final List<String> a = new ArrayList<String>() {
{
add("word");
}
};
Java 7 を使用すると、なぜ次のような問題が発生するのですか
final List<String> a = new ArrayList<>() {
{
add("word");
}
};
のように明示的な型宣言が必要です。
final List<String> a = new ArrayList<String>() {
{
add("word");
}
};
私見、一般に、Java は型推論を回避します。
いずれにせよ、<>
コンパイラがどのジェネリック型が使用されたかを知る必要がない場合にのみ機能します。匿名クラスの場合、コンパイラは型を推測しないため、実際の型を指定する必要があります。
型推論を提供するのではなく、型チェックを効果的<>
にオフにします。匿名クラスは実際のジェネリック型を格納するため、それを提供する必要があります。
List<String> a = new ArrayList<>()
むしろ似ている
@SuppressWarnings("unchecked")
List<String> a = new ArrayList()
ただし、匿名サブクラスの場合、コンパイラはジェネリック型を指定する必要があります。