gpt4 book ai didi

actionscript-3 - 如何在运行时确定类的父类(super class)?

转载 作者:行者123 更新时间:2023-12-03 22:42:56 24 4
gpt4 key购买 nike

在 Actionscript 3 中,如果我得到一个 Class 对象,有什么方法可以确定该类是否从另一个给定的类扩展而来?不过,我不想实例化该类以使用 is 关键字对其进行检查。

更具体地说,我试图让这个功能起作用:

public function validateClass(classObj:Class):EngineObject{
if(classObj extends EngineObject){
return new classObj();
} else {
throw new Error("Given class is not a subclass of EngineObject!");
}
}

编辑:忘记 in 在 AS3 中保留

最佳答案

看看 flash.utils.getQualifiedSuperclassName()flash.utils.getQualifiedClassName()

您的函数可能如下所示。

import flash.utils.getQualifiedSuperclassName;
import flash.utils.getQualifiedClassName;

public function validateClass(cl:Class):EngineObject{
if(getQualifiedSuperclassName(cl) == getQualifiedClassName(EngineObject) ){
return new cl();
} else {
throw new Error("Given class is not a subclass of EngineObject!");
}
}

但这只适用于单个迭代深度。

您可以为每个迭代步骤执行此操作,直到您处于 object 级别。这是一个完整的方法。

public function validateClass(cl:Class):EngineObject
{
if ( getQualifiedSuperclassName(cl) == getQualifiedClassName(EngineObject) )
{
return new cl();
}

var sup:Class = getDefinitionByName(getQualifiedSuperclassName(cl)) as Class;
if ( sup == null || getQualifiedSuperclassName(sup) == getQualifiedClassName(Object) )
{
throw new Error("Given class is not a subclass of EngineObject!");
}

return validateClass(sup);
}

关于actionscript-3 - 如何在运行时确定类的父类(super class)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6680991/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com