に予約されていることを忘れては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);
}
まず、 'in'は予約語ですが、変数として使用することはできません。 –
私はこれの使用例に興味があります。それは、それができることができる答えからのように見えますが、インターフェイスでそれができないことを何を探していますか? –