Donc, pour commencer lets dire que j'ai un LinkedList<String>
,Java Convert générique LinkedList to Array Generic
je peux facilement le convertir en un tableau via toArray()
. à savoir
LinkedList<String> strList = new LinkedList<String>();
String[] strArray = strList.toArray(new String[0]);
Mais Disons que j'ai un LinkedList<T>
Je le code suivant:
LinkedList<T> tList = new LinkedList<T>();
T[] strArray = tList.toArray(new T[0]);
Je reçois le Impossible de créer un tableau générique de message d'erreur T.
Comment puis-je contourner le problème?
Spécifiquement dans ma classe j'ai LinkedList<AbstractNode<T>> nodes
, et j'essaie d'implémenter une méthode getAll() qui retourne tous les nœuds comme un tableau.
Merci!
Note La réponse de Péter Török fournit la bonne réponse à mon problème, mais pour moi, simplement renvoyer un ArrayList au lieu de [] comme Bar mentionné, a fini par lisser mon code beaucoup.
Note2 après avoir regardé mon code un peu plus je ne suis même pas sûr que la conversion était nécessaire pour commencer, LinkedList était bien pour ce que je voulais faire ...: -/
il doit y avoir un moyen sans utiliser la réflexion et ce qui est "a" dans ce bloc de code a.getClass(). GetComponentType() –
@krmby: non, il n'y a pas de telle manière. Les génériques sont implémentés en utilisant l'effacement en Java, ce qui signifie que le type de temps de compilation n'est pas connu, donc vous pouvez seulement "tricher" en obtenant le type d'exécution, ce qui signifie utiliser la réflexion. Vous pourriez passer une 'Classe' et l'utiliser dans 'newInstance()' mais cela serait toujours une réflexion. –
@krmby, malheureusement il n'y en a pas. Veuillez vérifier le code mis à jour. –