3
我正在寻找一种安全的方式来根据对象类型来分叉逻辑。我还没有发现如何检查对象是否属于特定的泛型类型。如何检查该对象是Haxe中泛型的实例
class Test {
static function main() {
var aa = new AA<Int>();
//ERROR: Cast type parameters must be Dynamic
//var a:A<Int> = cast(aa, A<Int>);
//ERROR: Unexpected)
//var a:A<Int> = Std.instance(aa, A<Int>);
//OK, but throw run-time exception with flash target.
var a:A<Int> = cast aa;
a.printName();
//Run-time exception
a = cast "String is obviously wrong type";
}
}
class A<T> {
public function new() { }
public function printName() {
trace("Generic name: A");
}
}
class AA<T> extends A<T> {
public function new() { super(); }
override public function printName() {
trace("Generic name AA");
}
}
是否有合法的方法来检查对象是否属于泛型?
我无法重现您在Flash上获得的运行时异常。另外,你的代码片段似乎缺少'B'的类型声明。 – Gama11
你可以用SWF目标和调试flash播放器来查看http://try.haxe.org/#C6a93。 – kolonitsky