获取Haxe中的字段类型(反射api)

vbe*_*nce 8 reflection haxe

我有一节课:

class MyClass {
    private var num : Int;
}
Run Code Online (Sandbox Code Playgroud)

我想知道该字段具有类型,Int 而不管当前值是什么null,例如.

Wan*_*eck 5

如果没有编译时信息,您就无法在运行时执行此操作。您可以使用RTTI或宏来执行此操作。RTTI 会更容易实现,尽管如果您需要多次解析 RTTI,它可能会慢一点。

你的班级将变成:

@:rtti
class MyClass {
    private var num : Int;
}
Run Code Online (Sandbox Code Playgroud)

并获取字段类型:

var rtti = haxe.rtti.Rtti.getRtti(MyClass);
for (field in rtti.fields) {
    if (field.name == "num") {
        switch (field.type) {
            case CAbstract(name, _):
                trace(name); // Int
            case _:
        }
    }
}
Run Code Online (Sandbox Code Playgroud)