为什么不能通过Type.getClass()访问类的静态字段?

时间:2015-07-31 12:54:30

标签: class types haxe

在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。”

知道为什么吗?

2 个答案:

答案 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函数)。