我想在超类中获得子类类型。我试过
if(this is SubClass1)
在超级班但失败了。
您的代码有效:
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 {}
超类不知道他的子类,也不应该知道。一个子类扩展了他的超类,所以应该知道他的超类。
你想要达到的目标是不可能的。应该有其他(更好的)方法来解决您的问题/架构。