) имеет только методы, определенные
иже дает мне ошибку:
SceneNode.java:17: cannot find symbol
symbol : method execute() location:
class java.lang.Object
operation.execute();
^ 1 error
Код:
import java.util.LinkedList;
import java.util.Iterator;
public class SceneNode<T>{
T operation;
public SceneNode() {
}
public SceneNode(T operation) {
this.operation = operation;
}
public void setOperation(T operation) {
this.operation = operation;
}
public void doOperation() {
operation.execute();
}
}
Это урезанный (для вашей читабельности) старт простого графа сцены. Узел может быть моделью, преобразованием, переключателем и т. Д., Поэтому я сделал переменную под названиемoperation
это тип определяетсяT
переменные класса. Таким образом, я могу передатьTransformation
/ Model
/ Switch
объект (который имеетexecute
метод) и передать его так:
SceneNode<Transformation> = new SceneNode<Transformation>(myTransformation);
Я уверен, что базовый классSceneNode
и создание подклассов для всех различных типов узлов было бы лучшей идеей (я пробовал дженерики, только недавно узнал о них). Почему это не работает? Я должен упустить что-то фундаментальное в дженериках.