Class 获取Haxe中具有空值的类字段的类型
是否可以在haxe中获取具有null值的字段类 函数“Type.getClass”获取值的类(在运行时设置),但我需要在编译时定义类 函数“getClassFields”只返回字段名,不返回类 例如:Class 获取Haxe中具有空值的类字段的类型,class,types,metaprogramming,haxe,neko,Class,Types,Metaprogramming,Haxe,Neko,是否可以在haxe中获取具有null值的字段类 函数“Type.getClass”获取值的类(在运行时设置),但我需要在编译时定义类 函数“getClassFields”只返回字段名,不返回类 例如: class MyCls { public static var i:Int = null; public static var s:String = null; } trace(Type.getClass(MyCls.i)); // show "null", but I need t
class MyCls
{
public static var i:Int = null;
public static var s:String = null;
}
trace(Type.getClass(MyCls.i)); // show "null", but I need to get Int
trace(Type.getClass(MyCls.s)); // show "null", but I need to get String
在我的情况下,我无法改变MyCl类的来源
谢谢。您可以尝试
运行时类型信息
。它是一个Haxe特性,允许在运行时获取类型的完整描述。
由于您需要获取空字段的类型,因此确实需要求助于Haxe的运行时类型信息(RTTI)(如@ReallylUniqueName推荐的) 现在,很明显,有一个陷阱 RTTI需要
@:RTTI
元数据,但您说过不能更改MyCls
类来添加它。然后,解决方案是通过构建文件中的宏添加它。例如,如果您使用的是.hxml
文件,那么它应该如下所示:
--interp
--macro addMetadata("@:rtti", "MyCls")
-main Test
Test.hx:11: i,CAbstract(Int,{ length => 0 }),Int
Test.hx:11: s,CClass(String,{ length => 0 }),String
使用此定义和您自己的MyCls
定义,输出如下所示:
--interp
--macro addMetadata("@:rtti", "MyCls")
-main Test
Test.hx:11: i,CAbstract(Int,{ length => 0 }),Int
Test.hx:11: s,CClass(String,{ length => 0 }),String