このメソッドで静的メソッドを呼び出したオブジェクトを取得することはできますか?Reflection:静的メソッドで呼び出しオブジェクトを取得
私はこのコードを持っている:
class A{
static void foo(){
}
}
A a = new A();
a.foo();
は、私は方法foo()
でインスタンスa
を得ることができますか?
このメソッドで静的メソッドを呼び出したオブジェクトを取得することはできますか?Reflection:静的メソッドで呼び出しオブジェクトを取得
私はこのコードを持っている:
class A{
static void foo(){
}
}
A a = new A();
a.foo();
は、私は方法foo()
でインスタンスa
を得ることができますか?
まず、コードはプログラマーとしては良くありません。
静的メソッドはクラスレベルのメソッドであり、クラスのインスタンスなしで呼び出す必要があるからです。
推奨アプローチ:
class A{
static void foo(){
}
}
A.foo();
は私が)(メソッドfooでインスタンスaを得ることができますか?
いいえ、できません。 Because foo() is declared as static。したがって、このメソッドの内部でこれを使用することはできません。これは、メソッドを呼び出すオブジェクトへの参照を含んでいるためです。
static
メソッドのインスタンスオブジェクトはありません(スタティックメソッドは特定のオブジェクトでは動作しません。名前空間のためにクラス内でのみ定義されています) - です。
class A{ static void foo(A theObject){ } } A a = new A(); A.foo(a);
、より良いインスタンスから静的メソッドを呼び出すことはありませんされています
ありませんが、不可能である...静的メソッドは、基準を持っていない、あなたはそれのようにメソッドを再実装渡す必要がありますオブジェクトの
いいえ;それはstatic
の意味です。
コンパイラは実際にはインスタンスを完全に無視します。
インスタンスメソッドを使用します。
コンストラクタA()はどこですか? –
コンストラクタを定義しない場合、A()はデフォルトで使用されるものです... – rascio