静的ジェネリックメソッドを含む奇妙な状況に遭遇しました。これはコードです:
_class Foo<E>
{
public static <E> Foo<E> createFoo()
{
// ...
}
}
class Bar<E>
{
private Foo<E> member;
public Bar()
{
member = Foo.createFoo();
}
}
_
式Foo.createFoo()
で型引数を指定する必要がないのはなぜですか?これはある種の型推論ですか?それについて明示したい場合、どのようにtype引数を指定できますか?
はい、これは JLSセクション15.12.2.8 に従って、割り当てのターゲットに基づく型推論です。明確にするために、次のように呼び出します。
Foo.<String>createFoo();