2010-12-03 40 views

Répondre

1

Pour première, vous pouvez l'utiliser comme:

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

Pour la deuxième, vous êtes plus limité:

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

Comment voulez-vous attendre à mettre en œuvre la première? La seconde est mauvaise car elle force le code client à utiliser des caractères génériques.

3

Dans le premier, T est accessible dans le corps de la méthode, alors que dans le second il n'est pas. Que cela soit utile dépend du travail de la méthode.