【发布时间】:2020-07-16 20:09:40
【问题描述】:
下面的代码给了我错误:
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 的基类和对所有各种类型的节点进行子类化会是一个更好的主意(我正在尝试泛型,最近才了解它们)。为什么这不起作用?我一定遗漏了一些关于泛型的基本知识。
【问题讨论】: