2016-12-08 2 views
0

Вот ссылка на структуру данных: http://git.eclipse.org/c/platform/eclipse.platform.ui.git/plain/bundles/org.eclipse.ui.ide/src/org/eclipse/ui/internal/ide/misc/DisjointSet.javaКак создать экземпляр родительского узла из Java DisjointSet

Вот что я пытался в основном методе. (родительский узел указывает на себя и имеет ранг 0.)

public static void main(String[] args) { 
    DisjointSet x = new DisjointSet(); 
    **Node<T> parent = new Node<T>(parent, 0);** 
} 

Вот мои сообщения об ошибках:

Ошибка: нестатическая тип переменной T не может ссылаться из статического контекста

Ошибка: переменная типа нестатического типа T не может ссылаться на статический контекст

Похоже, что одна ошибка для T по обе стороны знака равенства.

ответ

0

Ошибки в том, что вы обращаетесь к нестатическому переменному экземпляру внутри статического метода

Всех поля членов интерфейса являются по умолчанию public, static и final.

Поскольку внутренний интерфейс static по умолчанию, вы не можете обращаться к T от static полях или методах.

T фактически связан с экземпляром класса, если это было связано с static поле или метод, который связан с классом, то это не имело бы никакого смысла

Вы можете создать один класс с информация:

public class MyTreeNode<T>{ 
    public T data = null; 
    public MyTreeNode parent = null; 

    public MyTreeNode(T data) { 
     this.data = data; 
    } 

    public void addChild(MyTreeNode child) { 
     child.setParent(this); 
     this.children.add(child); 
    } 

    public void addChild(T data) { 
     MyTreeNode<T> newChild = new MyTreeNode<>(data); 
     newChild.setParent(this); 
     children.add(newChild); 
    } 

    public void addChildren(List<MyTreeNode> children) { 
     for(MyTreeNode t : children) { 
      t.setParent(this); 
     } 
     this.children.addAll(children); 
    } 


    public T getData() { 
     return data; 
    } 

    public void setData(T data) { 
     this.data = data; 
    } 

и основные примеры:

MyTreeNode<String> root = new MyTreeNode<>("Root"); 

MyTreeNode<String> child1 = new MyTreeNode<>("Child1"); 
child1.addChild("Grandchild1"); 
child1.addChild("Grandchild2"); 

MyTreeNode<String> child2 = new MyTreeNode<>("Child2"); 
child2.addChild("Grandchild3"); 

root.addChild(child1); 
root.addChild(child2); 
root.addChild("Child3"); 

root.addChildren(Arrays.asList(
     new MyTreeNode<>("Child4"), 
     new MyTreeNode<>("Child5"), 
     new MyTreeNode<>("Child6") 
)); 

for(MyTreeNode node : root.getChildren()) { 
    System.out.println(node.getData()); 
} 

Ссылка: here и here

+0

Спасибо, это было полезно! –

Смежные вопросы