1

我有一个 xsd 文件,其中定义了 100 多种类型。我使用 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( );

编辑:测试了我的答案,它有效。我不知道 Pangea 提到的技术,但这也有效,而且比我的回答要好。代码看起来像这样。

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