dire A code> est une interface. Quelle est la différence entre public void foo(A a) { ...}
4 Réponses :
Il n'y a pas de différence lors de l'utilisation d'un objet. Mais imaginez si vous aviez
public <T extends A> void f(List<T> list) { ... };
Pour le second cas, vous pouvez toujours écrire Public Void F (liste étend une liste); code>
Pas beaucoup.
D'autre part, considérez cette méthode: p> et code d'appelant: p> résultat code> comme a code>) avez-vous déclaré méthode comme p>
Ceci est également vrai si vous avez un type de retour.
"Avez-vous déclaré F comme", qu'est-ce que le f code> signifie?
Il n'y a pas de différence dans votre cas car le paramètre type est utilisé à un seul endroit uniquement. Les deux méthodes accepteront tout ce qui est un A. La méthode générique aurait plus de sens dans ce cas car le paramètre de type vous permettrait de lier la valeur de retour au paramètre transduit:
public <T extends A> T f(Class<T>) {...}
si cela fait une différence dépend de ce qui est à l'intérieur de cette fonction. P>
Le point de générique est d'assurer la sécurité de type. Supposons que A a deux sous-classes, appelons-les B et C. Dans le premier exemple, à l'aide de F (liste ), la liste pourrait inclure B, C, ou un mélange des deux. Mais dans le deuxième exemple, F Que ce soit bon ou mauvais dépend de ce que vous essayez de faire. Si l'idée est que vous souhaitez une liste qui est soit tout ce que B ou TOUT C, le générique aide à garantir cela. Si vous souhaitez une liste pouvant être un mélange des deux, vous ne voulez pas utiliser le générique, utilisez le simple F (liste ). P>
De quels exemples parlez-vous?
Par "exemples", je voulais dire les deux déclarations de fonction L'affiche originale a donné: "
Je ne vois pas cela dans la question; seulement dans l'une des réponses
La question commence, "dis dire qu'une interface est une interface. Quelle est la différence entre". La ligne suivante est la première déclaration de fonction que je fais référence à un "exemple". Ensuite, il dit "ou" et il donne l'exemple suivant. Ce texte n'apparaît-il pas correctement dans votre navigateur ou ne nous compare-t-il pas?
Il n'y a pas de liste list list code> dans sa question; seulement t code> et a code>
Oups, désolé! Aller en arrière entre la question et les réponses que j'ai confondues une réponse avec la question originale! Eh bien, la question devient obsolète de toute façon, pas sûr qu'il y ait un point sur la mise à jour de ma réponse pour clarifier au-delà de ce commentaire.