0

次の 2 つのメソッド シグネチャの違いは何ですか。

public <T extends MyClass> Set<T> getMyList() {...}

public Set<? extends MyClass> getMyList() {...}
4

2 に答える 2

3

最初のものでTは、メソッド本体でアクセスできますが、2 番目のものではアクセスできません。それが役立つかどうかは、メソッドのジョブによって異なります。

于 2010-12-03T18:52:05.000 に答える
1

最初の場合は、次のように使用できます。

Set<MyClass> set = thing.getMyList();
Set<MyDerivedClass> set = thing.getMyList();
Set<?> set = thing.getMyList();
Set<? extends MyClass> set = thing.getMyList();
Set<? extends MyDerivedClass> set = thing.getMyList();

第二に、あなたはより制限されています:

Set<?> set = thing.getMyList();
Set<? extends MyClass> set = thing.getMyList();

最初のものをどのように実装すると思いますか? 2 つ目は、クライアント コードにワイルドカードの使用を強制するため、不適切です。

于 2010-12-03T19:06:01.417 に答える