0

我已经使用 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 的子类不重要;他们编译得很好。给我一个错误的行是 Arrays.asList 行。我得到错误

替代文字 http://grab.by/grabs/b553ffb898ca0874ef4741b8c87fc576.png

我不知道它从哪里得到任何关于 HelpCtx.Provider[]... 有没有人看到这个片段有什么问题?

将 asList 行替换为

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

工作正常。但我更喜欢 Arrays.asList 的较短语法

4

4 回答 4

4

试试这个

List<Node> nodes = Arrays.<Node>asList(n,m,subclass);    
于 2010-07-30T14:37:10.607 回答
2

您的错误图形没有显示给我,但它看起来像一个泛型问题。当您从 netbeans 6.8 迁移到 6.9 时,编译器警告可能会转换为编译器错误?

尝试将您的列表声明为...

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

通配符语法指定列表包含节点和从节点继承的任何内容。

于 2010-07-30T13:06:56.907 回答
2

是的,你是对的,这是 NetBeans 6.9 中已经报告的错误。所以希望它会很快得到解决。您可以在此处查看该错误报告

于 2010-07-30T13:28:51.420 回答
-1

它应该是:

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

请记住:

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

他们是不同的班级。

于 2010-07-30T13:15:04.047 回答