Java中的通用数组问题

4

我有这么一段代码,它一直说无法创建通用数组,但是我的Node类中没有通用类型,只有一个Object字段。Node类是一个内部类。为什么会这样?

public class TernarySearchTrie<E> implements TrieInterface<E> {

    private Node[] root = new Node[256];
    private int size = 0;

    private class Node {
        char c;
        Node left, mid, right;
        Object value;
    }
}

Node 的定义在哪里? - templatetypedef
私有的三叉搜索树节点数组 root = new TernarySearchTrie.Node[256]; 起作用了。 - erkfel
2个回答

4
在Node类中添加static修饰符:
private static class Node {
    char c;
    Node left, mid, right;
    Object value;
}

没有使用 static,它依赖于具有范型的TernarySearchTrie类。

2
在有问题的 new Node[256] 中实际上是 TernarySeachTrie<E>.Node[256]。一种解决方案是使用原始类型:
Node[] root = TernarySearchTrie.Node[256];

当然,编译器会对此发出警告。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接