public <E extends Foo> List<E> getResult(String s);
Foo
自分のクラスはどこですか。
このメソッドの戻り値の型は何ですか? 2 つの戻り値の型があるように見えるのはなぜですか?
いいえ、2 つの戻り値の型はありません。これは、あなたが見ている一般的な方法です。
<E extends Foo>
→ メソッドのジェネリック型を宣言しています。List<E>
→これがあなたのリターンタイプです。メソッドE
は、 のサブクラスであるジェネリック型を持つことができますFoo
。メソッドの戻り値の型はList<Foo-or-any-subtype-of-Foo>
.
戻り値の型はList<E>
. 句<E extends Foo>
は戻り型ではありません。これはジェネリック型宣言であり、特定の型が(またはのサブクラス) でE
なければならないことを指定します。これは、ジェネリック メソッドを宣言するための標準的な構文です。Foo
Foo
ジェネリックに関連するJavaドキュメントを参照してください。
<E extends Foo> // declares the bounds for the generic type `E`
List<E> // declares the return value
メソッドの戻り値の型はList<E>
.