2009-12-11 12 views
5

は、私は2つの文字列があります。これを実装する方法ReflectionでJavaクラスを拡張するにはどうすればよいですか?

Class okClass=aClass.extends(b);//how to implement this? 

:私はリフレクション

Class aClass = Class.forName(a); 

によってクラスを取得

String a="org.test.A"; 
String b="org.test.B"; 

を私はAClassはは次のように、Bを拡張したいですか?

okClassの取得方法は?

ありがとうございました!

+4

は、AとBがすでに他の場所で定義されたクラスはありますか? okClassにはどのようなプロパティがありますか?問題はそれほど意味をなさない。 –

答えて

8

インターフェイスでのみ動作するJDK dynamic proxyを使用する以外にも、実行時にクラスを拡張するためにCGLIBまたはjavassistを使用できます。

3

まず、dynamic proxiesを読んでください。プロキシはクラスを拡張しませんが、呼び出しハンドラを介してクラスの実装にマップできるインターフェイスを実装します。

4

一般に、実行時に新しいクラス(オブジェクトではない)を作成できるようにしたいとします。これにはbytecode engineeringまたはjava compiler apiを使用できます。編集バイトコードのためのクラスライブラリである私はCGLIBを見てお勧めしますが、javassistもある前に言った