8
votes

Méthode d'impression de liste générique

J'essaie d'écrire une méthode d'impression générique qui fonctionne pour toutes les classes qui implémentent l'interface "itérable" xxx

mais je reçois l'erreur "La méthode impression (t []) dans La liste de types n'est pas applicable pour les arguments (arraylist) "


1 commentaires

Vous ne voulez probablement pas nommer votre liste . En outre, la liste T dans n'est pas la même que le t dans Static public > Liste d'impression annulée (T []) .


4 Réponses :


7
votes

Votre paramètre est t [] . Qui est un tableau d'un type qui étend ibler . Vous voulez simplement t . Mais vous avez également besoin d'une variable de type pour le paramètre de type dans iTHEREFT . Vous avez besoin de xxx

vous en avez besoin parce que vous ne voulez pas d'un iérhable qui est ce qu'il est dans votre mise en œuvre actuelle.


2 commentaires

Je pense que impression (itérable ) irait aussi à moins que je lisais trop vite.


@Paulbellora Yeah, tu as raison. Cela fonctionne aussi (et probablement mieux dans ce cas). C'est amusant de jouer avec des génériques.



0
votes

si t code> s'étend ibler code> alors faites-le simplement:

<T extends Iterable<?>>


2 commentaires

Cela ne compilera pas non plus.


Oui, je suis juste à la recherche de plus près de sa définition générique qui n'a probablement pas raison ..



4
votes

Votre définition générique n'est pas correcte. Vous essayez de définir les limites sur > mais le paramètre générique ( integer ) n'est pas le t .

Vous pouvez le faire fonctionner en introduisant un paramètre générique distinct: un pour indiquer la collection et une pour indiquer les valeurs de la collection.

sidenote: vous n'avez pas besoin t [] du tout. Vous voulez juste t . xxx

sortie xxx


0 commentaires

3
votes

comme system.out.println code> accepte tous les objets code> s, et vous n'utilisez pas vraiment vos génériques dans la méthode, je ne vois aucune raison d'utiliser des génériques du tout . Ce code accomplira la même chose:

MyClass[] objects = new MyClass[5];
print(objects);


0 commentaires