7
votes

La différence entre vide de foo (t) et vidiction foo (a)

dire A code> est une interface. Quelle est la différence entre

public void foo(A a) { ...}


0 commentaires

4 Réponses :


8
votes

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) { ... };


1 commentaires

Pour le second cas, vous pouvez toujours écrire Public Void F (liste



7
votes

Pas beaucoup.

D'autre part, considérez cette méthode: xxx

et code d'appelant: xxx < p> Ce ne serait pas possible (ci-dessus ne compilerait pas, car le compilateur vous obligeait à déclarer résultat comme a ) avez-vous déclaré méthode comme xxx


2 commentaires

Ceci est également vrai si vous avez un type de retour.


"Avez-vous déclaré F comme", qu'est-ce que le f signifie?



4
votes

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>) {...}


0 commentaires

0
votes