11
public <E extends Foo> List<E> getResult(String s);

Foo自分のクラスはどこですか。

このメソッドの戻り値の型は何ですか? 2 つの戻り値の型があるように見えるのはなぜですか?

4

3 に答える 3

23

いいえ、2 つの戻り値の型はありません。これは、あなたが見ている一般的な方法です。

  • <E extends Foo>→ メソッドのジェネリック型を宣言しています。
  • List<E>→これがあなたのリターンタイプです。

メソッドEは、 のサブクラスであるジェネリック型を持つことができますFoo。メソッドの戻り値の型はList<Foo-or-any-subtype-of-Foo>.

于 2013-03-07T21:17:16.580 に答える
7

戻り値の型はList<E>. 句<E extends Foo>は戻り型ではありません。これはジェネリック型宣言であり、特定の型が(またはのサブクラス) でEなければならないことを指定します。これは、ジェネリック メソッドを宣言するための標準的な構文です。FooFoo

于 2013-03-07T21:17:20.547 に答える
4

ジェネリックに関連するJavaドキュメントを参照してください。

<E extends Foo> // declares the bounds for the generic type `E`
List<E> // declares the return value

メソッドの戻り値の型はList<E>.

于 2013-03-07T21:17:43.857 に答える