Üdv!
Van egy érdekes dolog amit nem értek. Van az alábbi kód:
public class BinaryTree< T > {
private Node< T > root;
public class PreorderIterator< T > implements Iterator< T > {
Stack< Node< T > > stack = new Stack< Node< T > >();
public PreorderIterator() {
if(BinaryTree.this.root != null)
stack.push((Node< T >)BinaryTree.this.root);
}
...
Ebből ezt a sort nem értem:
stack.push((Node< T >)BinaryTree.this.root);
Tegnap kb. 1 órát szívtam mire sikerült működésre bírni, mégpedig azzal hogy a BinaryTree.this.root-ot Node típusúra kasztolom, így lefordul és helyesen(?) működik a program, de nem értem miért. Egy Node típust miért kell ugyanarra a típusra kasztolnom?
Ha átírom így:
stack.push(BinaryTree.this.root)
az alábbi hibaüzenetet kapom:
./binarytree/BinaryTree.java:15: push(binarytree.Node< T >) in java.util.Stack< binarytree.Node< T > > cannot be applied to (binarytree.Node< T >)
stack.push(BinaryTree.this.root);
^
1 error
ami számomra teljesen értelmetlen, mert én úgy értelmezem hogy a push(Node< T >) metódust nem tudja alkalmazni egy Node< T > típusú objektumra :O
Ez a Node osztályom:
public class Node< T > {
Node< T > left,right;
T data;
public Node(Node< T > other) {
left = other.left;
right = other.right;
data = other.data;
}
public Node(Node< T > newLeft, Node< T > newRight, T newData) {
left = newLeft;
right = newRight;
data = newData;
}
}