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