Java Arrays.asList编译问题
我已经使用Arrays.asList几十次,如果不是几百次的话,都没有问题。在从6.8切换到NetBeans 6.9之后,以前编译的代码突然无法编译。这里有几句话值得商榷:Java Arrays.asList编译问题,java,netbeans,netbeans-6.9,Java,Netbeans,Netbeans 6.9,我已经使用Arrays.asList几十次,如果不是几百次的话,都没有问题。在从6.8切换到NetBeans 6.9之后,以前编译的代码突然无法编译。这里有几句话值得商榷: Node n = new NickNode(4,5); Node m = new NonLocatableNode(); Node subclass = new NickSubclassNode(); List<Node> nodes = Arrays.asList(n,m,subclass); Node n
Node n = new NickNode(4,5);
Node m = new NonLocatableNode();
Node subclass = new NickSubclassNode();
List<Node> nodes = Arrays.asList(n,m,subclass);
Node n=新的NickNode(4,5);
Node m=新的NonLocatableNode();
Node subclass=new NickSubclassNode();
列表节点=数组.asList(n,m,子类);
节点的子类并不重要;他们编译得很好。给出错误的行是Arrays.asList行。我得到了错误
我不知道它从哪里得到关于HelpCtx.Provider[]的任何信息。。。有人看到这个片段有什么问题吗
将asList行替换为
List<Node> theNodes = new LinkedList<Node>();
theNodes.add(n);
theNodes.add(m);
theNodes.add(subclass);
List theNodes=newlinkedlist();
节点。添加(n);
节点。添加(m);
添加(子类);
很好。但是我更喜欢较短的数组语法。asList我看不到您的错误图形,但它看起来像是泛型问题。当您从netbeans 6.8迁移到6.9时,编译器警告可能被转换为编译器错误 尝试将您的列表声明为
List<? extends Node> nodes = Arrays.asList(n, m, subclass);
列表应该是:
List<? extends Node> nodes = Arrays.asList(n,m,subclass);
List是的,这是NetBeans 6.9中已经报告过的错误。希望它能很快得到解决。你可以看到bug报告,试试这个
List<Node> nodes = Arrays.<Node>asList(n,m,subclass);
List节点=Arrays.asList(n,m,subclass);
请原谅我的无知,但那个bug报告似乎完全无关。我根本没有收到空指针异常。一个较短的解决方法可能是绕过varargs:theNodes=Arrays.asList(新节点[]{n,m,subclass})
n、m和subclass都声明为节点
。运行时类型完全不相关。@Mark:n、m和子类都声明为节点,但列表不是列表。这就是你需要的方式?将节点扩展为泛型类型。这是对的,但在本例中这并不重要,因为asList将返回一个列表,而不是一个列表。这很有效。我在过去偶然发现了这种语法(它确实很奇怪),但从未在array.asList声明的上下文中使用过它。通常,类型推断工作正常。
List<Node> nodes = Arrays.<Node>asList(n,m,subclass);