Hallo liebe Mitglieder,
ich habe hier mein persönliches Henne-Ei Problem und wär euch für alle hilfreichen Beiträge dankbar
Ich möchte mit der Klasse Node Eltern-Kind-Beziehungen in einer Baumstruktur ausgeben.
Dafür habe ich die Klasse myNode von Node abgeleitet und um die Methode hasParent() erweitert. In der Main lege ich nun meine Nodes mit ihren Abhängigkeiten an und will sie mir ausgeben lassen. Ich kann allerdings nicht auf hasParent() zugreifen. Ich Versteh auch warum ... ich müsste den Parameter beim Anlegen der Note-Objekte mit myNode anstatt mit Node deklarieren. Aber das dann blubbert ja wieder der Konstruktor von myNote
Kann mir jemand sagen was ich im Code ändern muss damit die auskommentierte
Methode aufrufbar wird.
Ach ja - noch was: Ich will unbedingt mit der abgeleiteten Klasse arbeiten und die Basisklasse nicht verändern. Muss doch irgendwie gehen oder?
Hier mein Code
Und hier die Ausgabe:
Vielen Dank euch schonmal
ich habe hier mein persönliches Henne-Ei Problem und wär euch für alle hilfreichen Beiträge dankbar
Ich möchte mit der Klasse Node Eltern-Kind-Beziehungen in einer Baumstruktur ausgeben.
Dafür habe ich die Klasse myNode von Node abgeleitet und um die Methode hasParent() erweitert. In der Main lege ich nun meine Nodes mit ihren Abhängigkeiten an und will sie mir ausgeben lassen. Ich kann allerdings nicht auf hasParent() zugreifen. Ich Versteh auch warum ... ich müsste den Parameter beim Anlegen der Note-Objekte mit myNode anstatt mit Node deklarieren. Aber das dann blubbert ja wieder der Konstruktor von myNote
Kann mir jemand sagen was ich im Code ändern muss damit die auskommentierte
Java:
//if(node.hasParent())
Ach ja - noch was: Ich will unbedingt mit der abgeleiteten Klasse arbeiten und die Basisklasse nicht verändern. Muss doch irgendwie gehen oder?
Hier mein Code
Java:
import java.util.ArrayList;
public class Node {
private String name;
private ArrayList<Node> parents;
public Node(String name, ArrayList<Node> elements){
this.name = name;
this.parents = elements;
}
public String getName(){
return name;
}
public ArrayList<Node> getParents(){
return parents;
}
}
Java:
import java.util.ArrayList;
public class MyNode extends Node{
public MyNode(String name, ArrayList<Node> elements) {
super(name, elements);
}
@Override
public String toString(){
return String.format("Element.name:[%s]", getName());
}
public boolean hasParent(){
if(getParents() == null) return false;
else return true;
}
}
Java:
import java.util.ArrayList;
public class Main {
public static void main(String[] args) {
Node a = new MyNode("A", null);
Node b = new MyNode("B", new ArrayList<Node>(){{add(a);}});
Node c = new MyNode("C", new ArrayList<Node>(){{add(a);add(b);}});
Node d = new MyNode("D", new ArrayList<Node>(){{add(a);add(c);}});
ArrayList<Node> allNotes = new ArrayList<Node>();
//allNotes.add(a);
allNotes.add(b);
allNotes.add(c);
allNotes.add(d);
for(Node node : allNotes){
System.out.println(node);
//if(node.hasParent()) {
for(Node parent : node.getParents()){
System.out.println(" parent of" + node + " is "+parent);
}
//}
}
}
}
Und hier die Ausgabe:
Code:
Element.name:[B]
parent ofElement.name:[B] is Element.name:[A]
Element.name:[C]
parent ofElement.name:[C] is Element.name:[A]
parent ofElement.name:[C] is Element.name:[B]
Element.name:[D]
parent ofElement.name:[D] is Element.name:[A]
parent ofElement.name:[D] is Element.name:[C]
Vielen Dank euch schonmal