gpt4 book ai didi

class - 为什么无法通过 Type.getClass() 访问类的静态字段?

转载 作者:行者123 更新时间:2023-12-05 01:37:45 25 4
gpt4 key购买 nike

在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> has no field myStaticField."

知道为什么吗?

最佳答案

你需要使用反射来获取这样的值:

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(死代码消除),我必须用 @:keep 标记静态变量。通常 DCE 会抑制该变量,因为它从未被直接引用。

这里的工作示例:http://try.haxe.org/#C1612

关于class - 为什么无法通过 Type.getClass() 访问类的静态字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31746718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com