2009-07-27 30 views
2

私が持っているものがすべてオブジェクトのインスタンスである場合、そのクラスの静的メソッドを呼び出すことはできますか?面白いことに、クラスの名前が何であるかわからないとしましょう。静的メソッドの名前だけです。インスタンスのみを持つクラスの静的メソッドを呼び出す

私はこれを行うことができますか?これはどうすればいいですか?

答えて

7

、あなたはそのクラスのオブジェクト

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"; 
     } 
    } 
+0

+1。 –

+0

コンストラクタのプロパティは、XMLやXMLListなどの一部のProxyベースのクラスでは機能しません。 –

+0

尋ねられる質問にもっと完全に答えるために簡単に編集 –

1

インスタンスを使用してクラス参照を取得します。

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?

+0

おそらく、Classオブジェクトへの参照でも静的メソッドを呼び出すことができないことに気づいただけです。私はこの答えが途中にあると思います。私はフレックスコンパイラにアクセスできません、申し訳ありません。 –

+0

はい、あなたは、上記の私の答えをチェックアウトすることができます。簡素化のために+1 – loungerdork

4
から静的変数を呼び出すことができます

より簡単な方法がありますが、これは静的関数が存在することを前提としています。

var myclass:Class = getDefinitionByName("MyClass") as Class; 
myclass["myStaticMethod"](); 

この構文がうまくいくのは驚きです。

+0

myClass.myStaticMethod()は機能しませんか? –

+0

コンパイラを通過しません。 1180:定義されていない可能性のあるメソッドmyStaticMethodを呼び出します。 – loungerdork

関連する問題