使用 Type.getClassFields() 的结果
Using the result of Type.getClassFields()
如何使用 getClassFields()
返回的 static 字段名称?
Type
本身似乎没有任何与此相关的功能,如果在上面返回的字段名称上使用Reflect
这样:
trace(Reflect.field(Type.createEmptyInstance(Type.resolveClass(...)), fieldName));
...你得到:
TypeError: Error #1010: A term is undefined and has no properties.
我的目标是使用动态给定的类名获取静态字段的值,例如我怎样才能 "hi"
出:
class Blah {
public static var test:String="hi";
}
...当我事先不知道 Blah 时?
运行 斧头 3.2.1.
这应该有效:
var cl = Type.resolveClass("Blah");
trace(Reflect.field(cl, "test"));
静态字段需要通过 Class<T>
类型访问,因此 createEmptyInstance()
在这里不起作用。如果要检索实例字段的值,则需要将实例传递给 Reflect.field()
。
您还需要确保 Blah
已实际编译并在运行时可用。如果仅通过反射引用它,则情况并非如此——它需要在某处导入。如果启用了 DCE,class 还需要 @:keep
元数据。
如何使用 getClassFields()
返回的 static 字段名称?
Type
本身似乎没有任何与此相关的功能,如果在上面返回的字段名称上使用Reflect
这样:
trace(Reflect.field(Type.createEmptyInstance(Type.resolveClass(...)), fieldName));
...你得到:
TypeError: Error #1010: A term is undefined and has no properties.
我的目标是使用动态给定的类名获取静态字段的值,例如我怎样才能 "hi"
出:
class Blah {
public static var test:String="hi";
}
...当我事先不知道 Blah 时?
运行 斧头 3.2.1.
这应该有效:
var cl = Type.resolveClass("Blah");
trace(Reflect.field(cl, "test"));
静态字段需要通过 Class<T>
类型访问,因此 createEmptyInstance()
在这里不起作用。如果要检索实例字段的值,则需要将实例传递给 Reflect.field()
。
您还需要确保 Blah
已实际编译并在运行时可用。如果仅通过反射引用它,则情况并非如此——它需要在某处导入。如果启用了 DCE,class 还需要 @:keep
元数据。