2011-07-12 16 views
1

このメソッドで静的メソッドを呼び出したオブジェクトを取得することはできますか?Reflection:静的メソッドで呼び出しオブジェクトを取得

私はこのコードを持っている:

class A{ 
    static void foo(){ 
    } 
} 
A a = new A(); 
a.foo(); 

は、私は方法foo()でインスタンスaを得ることができますか?

+0

コンストラクタA()はどこですか? –

+0

コンストラクタを定義しない場合、A()はデフォルトで使用されるものです... – rascio

答えて

2

まず、コードはプログラマーとしては良くありません。

静的メソッドはクラスレベルのメソッドであり、クラスのインスタンスなしで呼び出す必要があるからです。

推奨アプローチ:

class A{ 
    static void foo(){ 
    } 
} 
A.foo(); 

は私が)(メソッドfooでインスタンスaを得ることができますか?

いいえ、できません。 Because foo() is declared as static。したがって、このメソッドの内部でこれを使用することはできません。これは、メソッドを呼び出すオブジェクトへの参照を含んでいるためです。

1

staticメソッドのインスタンスオブジェクトはありません(スタティックメソッドは特定のオブジェクトでは動作しません。名前空間のためにクラス内でのみ定義されています) - です。

 
class A{ 
    static void foo(A theObject){ 
    } 
} 
A a = new A(); 
A.foo(a); 

、より良いインスタンスから静的メソッドを呼び出すことはありませんされています

0

ありませんが、不可能である...静的メソッドは、基準を持っていない、あなたはそれのようにメソッドを再実装渡す必要がありますオブジェクトの

0

いいえ;それはstaticの意味です。
コンパイラは実際にはインスタンスを完全に無視します。

インスタンスメソッドを使用します。

関連する問題