2010-11-30 13 views
1

xsdファイルには100種類以上のファイルが定義されています。私はxmlbeansバインディングでJavaコードを生成し、使用することができますxmlbeans使用時にリフレクションを使用してインスタンスを作成する

MyType.Factory.newInstance(); 

クラスインスタンスを取得します。しかし、タイプが多すぎるので、それぞれのタイプのインスタンスを作成するためにリフレクションを使用することに決めました。

私は今

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

を使用してがMyTypeのクラス(インタフェース)を取得。しかしがMyTypeインタフェースで定義されたファクトリクラスを取得し、新しいインスタンスを取得する方法の見当がつかないことができます。

コメントやヒントはありがとうございます。前もって感謝します。

+0

あなたはどのクラスあなたがインスタンス化したい全体のファクトリクラス(またはそれ以上、それの)とを投稿することができます? – javamonkey79

答えて

3

あなたは内部クラスを参照するためにバイナリ名を使用する必要があります。com.foo.MyType $工場を

1

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

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

編集:は私の答えをテストし、それが動作します。私はパンゲアが言及した技術を知らなかったが、それも機能し、それは私の答えよりも優れている。コードは次のようになります。

Class.forName("MyType$Factory").newInstance(); 
+0

別の解決策を提供していただきありがとうございます。 – Gnavvy

関連する問題