这个问题其实经常出现。以这个实例模型 View 为例。我有 2 个对象。仿真对象和渲染对象。
ObjectRSim 类(Object,指定为 Render Sim)类似于:
class ObjectRSsim {
var simObject:ObjectSim;
}
ObjectRSim,使用 ObjectSim 的属性/无效。
有继承ObjectRSim和ObjectSim的对象:
PosObjectRSim 和 PosObjectSim(位置对象..)
class PosObjectRSim extends ObjectRSim {
var posSimObject:PosObjectSim;
}
或者...
class ObjectRSim {
var simObject:Dynamic; //Dynamic is untyped Type from haxe, the compiler does not check calls to a Dynamic object.
}
我应该在 ObjectRSim 层次结构类中引用 ObjectSim 的继承层次结构中的每个类型,还是应该只使用 simObject:Dynamic?
最佳答案
在这种情况下使用 Dynamic 是完全错误的。它通常很慢(我猜除了 javascript 之外的每个 haxe 目标),没有内联,并且通常仅用于与底层平台交互或使用序列化(YAML、JSON 等)。
谈论解决问题...
如果没有计划数以千计的此类对象,我可能只是低级别类对象的另一个字段。从 OOP 的角度来看,这不是最清晰的方法,但它通常会为我带来更简单、更清晰的代码。
转换是另一种选择(我个人不喜欢)。
参数化可能是处理这个问题的最佳方式,但我不确定我们是否已经在 haxe 中进行了类型限制参数化。
关于java - 引用父类(super class)(类型化语言)的首选方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10891536/