2010-11-30 62 views
1

我有一个xsd文件,其中定义了100多种类型。我使用xmlbeans绑定生成java代码,然后我可以使用使用反射在使用xmlbeans时创建实例

MyType.Factory.newInstance(); 

获取类实例。但是由于有太多类型,我决定使用反射来获取每种类型的创建实例。

我现在可以使用

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

得到的MyType的类(接口),但不知道该怎样让在MyType的接口中定义的工厂类,然后获得新的实例想法。

任何评论或提示表示赞赏。提前致谢。

+0

您可以发布全厂级(或以上的话)和类需要实例? – javamonkey79 2010-11-30 03:25:22

回答

3

你必须使用二进制名称来引用内部类:com.foo.MyType $厂

1

所以,你有一个内部类Factory在你的界面MyType中声明?如果我有这个权利,并且如果Factory是由`MyType'声明的唯一成员类,并且如果我理解了您要查找的内容,那么以下内容应该可以工作。

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

编辑:测试我的回答出来,它的工作原理。我没有意识到Pangea提到的技术,但它也可行,而且比我的回答要好。代码看起来像这样。

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

感谢您提供另一种解决方案。 – Gnavvy 2010-11-30 05:54:45

相关问题