2016-05-22 10 views
4

Ich habe dieses Bit Code und es sagt, dass es kein generisches Array erstellen kann, aber ich habe kein generisches in meiner Node-Klasse, nur ein Objektfeld. Die Node-Klasse ist eine innere Klasse. Warum macht es das?Generisches Array in Java Ausgabe

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; 
    } 
} 
+0

Wo ist 'Node' definiert? – templatetypedef

+0

_private TernarySearchTrie.Node [] root = neu TernarySearchTrie.Node [256]; _ funktioniert – erkfel

Antwort

2

Was Sie in der problematischen new Node[256] tun ist eigentlich TernarySeachTrie<E>.Node[256]. Eine Lösung ist, rohen Typ zu verwenden:

Node[] root = TernarySearchTrie.Node[256]; 

Natürlich gibt der Compiler Sie eine Warnung dafür.

4

den static Modifikator Node-Klasse hinzufügen:

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

Ohne static, hängt es von der TernarySearchTrie Klasse, die Generika haben.