2010-11-25 13 views
3

Javaにクラスへの参照を格納する方法はありますか?ここでは、私が何をしたいです:Javaでクラスへの参照を格納する方法は?

public class Foo 
{ 
    public static void doSomething() {...} 
}; 

SomeClass obj = Foo; 
obj.doSomething(); 

は私が後で元のクラスの静的メンバを呼び出すために、その保存されたオブジェクトを使用することができるようなクラスへの参照を格納することができますいくつかのクラス「工ass」はありますか?

明白なことは、クラスのクラス次のようになります。

Class obj = Foo.class; 
obj.someMember().doSomething(); 

が、私は「someMember()」としての役割を果たす可能性があるクラスのクラスのメンバーのどの考え出していないしていない...それらのどれも、私は思います。

私がやろうとしていることがJavaで可能なら誰でも知っていますか?

+0

Clone()を見ましたか? – CoolBeans

+0

http://download.oracle.com/javase/1.4.2/docs/api/java/lang/reflect/Method.htmlを見ましたか? – Gabe

答えて

5

クラスのgetMethod()メソッドを使用して、Classオブジェクトからメソッドを動的に取得できます。メソッドが静的である場合、 "invoke"の "object"パラメータはnullになります。あなたのメソッドがパラメータを必要としないため、

obj.getMethod("someMember", null).invoke(null, null); 

余分なヌルがある:

たとえば、「obj.someMemberは()」上記のこのようなものになるだろう。あなたのメソッドがパラメータを受け取った場合、それに応じて渡す必要があります。

これは、さまざまなチェック例外をスローするので、同様にそれらを処理する必要があります。

メソッドを呼び出すと、Objectが返されます。あなたはそれをあなたが予期しているどんなタイプにでもキャストしたいと思うでしょう、そして、あなたはそれに対して直接 "doSomething()"メソッドを実行することができます。

詳細については、反射と呼ばれるトリックを使用しています。 :)

+0

素晴らしい - これは私が探していたものです。 –

0

jdk1.5以上を使用している場合、注釈は、クラスのメタデータを取得する場合に選択します。

関連する問題