我想在超类中获取子类类型。 我试过了
if(this is SubClass1)
在超级班 但失败了。
答案 0 :(得分:2)
您的代码有效:
package{
import flash.display.Sprite;
public class TestSuperClass extends Sprite{
public function TestSuperClass(){
super();
trace((new SuperClass).isSubclass); // Output : false
trace((new Extended).isSubclass); // Output : true
}
}
}
internal class SuperClass
{
public function get isSubclass() : Boolean{
return this is Extended;
}
}
internal class Extended extends SuperClass {}
你可以动态地做(这很丑陋,不是性能友好,但它可以做到这一点):
package{
import flash.display.Sprite;
public class TestSuperClass extends Sprite{
public function TestSuperClass(){
super();
trace((new SuperClass).isSubclass); // Output : false
trace((new SuperClass).superClass); // Output : Object
trace((new Extended).isSubclass); // Output : true
trace((new Extended).superClass); // Output : SuperClass
}
}
}
import flash.utils.describeType;
internal class SuperClass
{
public function get isSubclass() : Boolean{
return describeType(this).@base.toString() != "Object";
}
public function get superClass() : String
{
return describeType(this).@base.toString().split("::").pop();
}
}
internal class Extended extends SuperClass {}
答案 1 :(得分:2)
超级班不知道他的子类,不应该知道。子类扩展了他的超类,所以应该知道他的超类。
你想要实现的目标是不可能的。应该有另一种(更好的)方法来解决您的问题/架构。