私が持っているものがすべてオブジェクトのインスタンスである場合、そのクラスの静的メソッドを呼び出すことはできますか?面白いことに、クラスの名前が何であるかわからないとしましょう。静的メソッドの名前だけです。インスタンスのみを持つクラスの静的メソッドを呼び出す
私はこれを行うことができますか?これはどうすればいいですか?
私が持っているものがすべてオブジェクトのインスタンスである場合、そのクラスの静的メソッドを呼び出すことはできますか?面白いことに、クラスの名前が何であるかわからないとしましょう。静的メソッドの名前だけです。インスタンスのみを持つクラスの静的メソッドを呼び出す
私はこれを行うことができますか?これはどうすればいいですか?
、あなたはそのクラスのオブジェクト
package{
import flash.display.Sprite;
public class Test extends Sprite{
public function Test(){
var variable : A = new A();
trace((variable as Object).constructor.a());
}
}
}
class A{
static function a() : String{
return "test";
}
}
インスタンスを使用してクラス参照を取得します。
var className:string = getQualifiedClassName(object); //returns the class name
var classObj:Class = getDefinitionByName(className) as Class; //get a Class object
またこれを見る - あなたは、そのオブジェクトのクラスオブジェクトへの参照を取得するには、オブジェクトのconstructorプロパティを使用することができますHow to get type of variable? and instantiate it?
おそらく、Classオブジェクトへの参照でも静的メソッドを呼び出すことができないことに気づいただけです。私はこの答えが途中にあると思います。私はフレックスコンパイラにアクセスできません、申し訳ありません。 –
はい、あなたは、上記の私の答えをチェックアウトすることができます。簡素化のために+1 – loungerdork
より簡単な方法がありますが、これは静的関数が存在することを前提としています。
var myclass:Class = getDefinitionByName("MyClass") as Class;
myclass["myStaticMethod"]();
この構文がうまくいくのは驚きです。
myClass.myStaticMethod()は機能しませんか? –
コンパイラを通過しません。 1180:定義されていない可能性のあるメソッドmyStaticMethodを呼び出します。 – loungerdork
+1。 –
コンストラクタのプロパティは、XMLやXMLListなどの一部のProxyベースのクラスでは機能しません。 –
尋ねられる質問にもっと完全に答えるために簡単に編集 –