2010-12-03 1 views

ответ

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(); 

Как вы ожидали бы реализовать в первую очередь? Второй плохой, потому что он заставляет клиентский код использовать подстановочные знаки.

3

В первом, T доступна в теле метода, в то время как во втором его нет. Будет ли это полезно, зависит от работы метода.