1

100 を超える型が定義された xsd ファイルがあります。xmlbeans バインディングを使用して Java コードを生成したので、次を使用できます。

MyType.Factory.newInstance();

クラスのインスタンスを取得します。しかし、型が多すぎるため、リフレクションを使用して各型のインスタンスを作成することにしました。

を使用して MyType のクラス(インターフェイス)を取得できるようになりました

Class clz = Class.forName("com.foo.MyType");

しかし、MyType インターフェイスで定義された Factory クラスを取得してから、新しいインスタンスを取得する方法がわかりません。

コメントやヒントをいただければ幸いです。前もって感謝します。

4

2 に答える 2

3

内部クラスを参照するには、バイナリ名を使用する必要があります: com.foo.MyType$Factory

于 2010-11-30T03:26:48.063 に答える
1

Factoryそれで、あなたのインターフェース内で宣言された内部クラスがありますMyTypeか?私にその権利があり、それFactoryが「MyType」によって宣言された唯一のメンバー クラスであり、探しているものを理解していれば、次のように動作するはずです。

clz.getDeclaredClasses( )[0].newInstance( );

編集:私の答えをテストしましたが、うまくいきました。パンゲアが言及したテクニックは知りませんでしたが、それも機能し、私の答えよりも優れています. コードは次のようになります。

Class.forName("MyType$Factory").newInstance( );
于 2010-11-30T03:25:12.513 に答える