У меня есть дерево, которое содержит три класса узлов.Например, корневой узел имеет левый и правый узел другого класса узлов.Все три класса реализуют интерфейс.Проблема в том, что до времени выполнения я не знаю, какой тип имеет левый и правый узел, но мне нужно привести к конкретному типу, иначе я не могу получить доступ к переменным узлов.
Итак, как я могу привести эти узлы к его типу во время выполнения?
//node has a attribut left of type of interface Visitable
public Visitable left;
....
//Visitable is the Interface that the three classes has implemented
(CLASS) leftNode = (CAST_TO_ITS_TYPE) node.left;
//I only can access isVisited, if leftNode is casted to its class
Boolean visited = leftNode.isVisited;
Я попытался "instanceof", но это не работает, потому что leftNode, возможно, не был инициализирован.
Visitable leftNode;
if (node.left instanceof NodeClassOne) {
leftNode = (NodeClassOne) node.left;
} else if (node.left instanceof NodeClassTwo) {
leftNode = (NodeClassTwo) node.left;
}
Boolean visited = leftNode.isVisited;