在Haxe中,可以使用以下函数获取对象的类:
Type.getClass(myObject);
如果对象myObject
是包含静态字段的类myClass
的实例,我应该能够访问此静态字段:
class MyClass
{
public static myStaticField:Int = 5;
}
public var myObject = new MyClass();
//expected trace: "5"
trace (Type.getClass(myObject).myStaticfield);
但结果是:
“Class< MyClass>没有字段myStaticField。”
知道为什么吗?
答案 0 :(得分:3)
您需要使用反射来获得这样的值:
custom.js
请注意,为了防止DCE(死代码消除),我必须用class Test {
@:keep public static var value = 5;
static function main() {
var test = new Test();
var v = Reflect.field(Type.getClass(test), "value");
trace(v);
}
public function new() {}
}
标记静态变量。通常,DCE将禁止该变量,因为它永远不会被直接引用。
这里的工作示例:http://try.haxe.org/#C1612
答案 1 :(得分:1)
尝试Reflect类(特别是callMethod或getProperty函数)。