1
클래스의 정적 변수에 런타임시 이름을 알 수있는 방법으로 액세스하는 것이 가능합니까?클래스 이름 런타임에서 정적 변수 액세스
나는 부모 인터페이스 배열에 정적 필드 'id'가 있다는 것을 알고있는 클래스의 인스턴스를 저장합니다. 매크로를 사용하여 컴파일 할 때 'id'를 쉽게 얻을 수 있지만 런타임에 그렇게하는 것이 어렵습니다.
import Macro;
interface Parent {
}
class A implements Parent {
static public var id = 1;
public var myVar: String;
public function new(name: String){
myVar = name;
}
}
class B implements Parent {
static public var id = 2;
public var myVar: String;
public function new(name: String){
myVar = name;
}
}
class Test {
static private var components = new Array<Parent>();
static function main() {
var a = new A("First.");
components.push(a);
components.push(new B("Second."));
var id = Macro.getId(a);
trace(id);
for (c in components) {
var cc = Type.getClass(c);
trace(Type.getClassName(cc));
// TODO: access 'id'
//trace(Macro.getId(cc));
}
}
}
코드 : http://try-haxe.mrcdk.com/#987dA