2010-07-30 6 views
0

J'ai utilisé Arrays.asList des dizaines sinon des centaines de fois sans problème. Tout d'un coup, le code de compilation ne parvient pas à se compiler après le passage à NetBeans 6.9 à partir de la version 6.8. Voici quelques lignes en question:Arrays.asList problème de compilation

Node n = new NickNode(4,5); 
Node m = new NonLocatableNode(); 
Node subclass = new NickSubclassNode(); 

List<Node> nodes = Arrays.asList(n,m,subclass); 

Les sous-classes de nœud ne sont pas importantes; ils compilent bien. La ligne qui me donne une erreur est la ligne Arrays.asList. J'obtiens l'erreur

alt text http://grab.by/grabs/b553ffb898ca0874ef4741b8c87fc576.png

Je ne sais pas où il se fait quoi que ce soit au sujet d'un HelpCtx.Provider [] ... Quelqu'un voit-il quelque chose de mal avec cet extrait?

Remplacement de la ligne de asList avec

List<Node> theNodes = new LinkedList<Node>(); 
theNodes.add(n); 
theNodes.add(m); 
theNodes.add(subclass); 

fonctionne très bien. Mais je préfère la syntaxe plus courte de Arrays.asList

+0

cela fonctionne bien pour moi .. – Bozho

+0

Une solution plus courte serait probablement court-circuitant varargs: 'theNodes = Arrays.asList (nouveau nœud [] {n, m, sous-classe}); ' –

Répondre

4

Commentaires Essayer cette

List<Node> nodes = Arrays.<Node>asList(n,m,subclass);  
+0

Cela a fonctionné. Je suis tombé sur cette syntaxe dans le passé (c'est vraiment bizarre), mais je n'ai jamais * * dû l'utiliser dans le contexte d'une déclaration Arrays.asList. Habituellement, l'inférence de type fonctionne bien. – I82Much

2

Votre graphique d'erreur ne s'affiche pas pour moi mais il ressemble à un problème de génériques. Peut-être un avertissement de compilateur a été commuté dans une erreur de compilateur lorsque vous êtes passés de netbeans 6.8 à 6.9?

Essayez de déclarer votre liste comme ...

List<? extends Node> nodes = Arrays.asList(n, m, subclass); 

La syntaxe générique indique que la liste contient des nœuds et tout ce qui hérite de nœud.

+0

N'a pas résolu le problème - obtenir exactement la même erreur. – I82Much

-1

il devrait être:

List<? extends Node> nodes = Arrays.asList(n,m,subclass); 

garder à l'esprit que:

List<Sub Class> is not a sub class for List<Parent Class> 

ils sont différentes classes.

+0

n, m et sous-classe sont tous déclarés en tant que 'noeud '. Le type d'exécution est complètement hors de propos. –

+0

@Mark: n, m et sous-classe sont tous déclarés en tant que nœud, mais la liste n'est pas une liste . c'est comme ça que tu dois avoir? étend le noeud en tant que type générique. – mhshams

+0

Vous avez raison, mais dans ce cas, cela n'a pas d'importance, car asList retournera une liste , pas une liste . –

2

Oui, vous avez raison, c'est le bogue dans NetBeans 6.9 qui est déjà signalé. Donc nous espérons qu'il sera bientôt résolu. Vous pouvez voir ce rapport de bogue here

+0

s'il vous plaît poster le lien où l'erreur est signalée. –

+0

Rakesh, j'ai posté un lien de bug. – Rupeshit

+0

Pardonnez mon ignorance, mais ce rapport de bogue semble être complètement sans rapport. Je ne reçois aucune exception de pointeur null du tout. – I82Much