我有一个xsd文件,其中定义了100多种类型。我使用xmlbeans绑定生成了java代码,然后我可以使用
MyType.Factory.newInstance();
获取类实例。但由于类型太多,我决定使用反射为每种类型获取创建实例。
我现在可以使用
获取MyType的类(接口)Class clz = Class.forName("com.foo.MyType");
但不知道如何在MyType界面中定义Factory类,然后获取新实例。
任何评论或提示都表示赞赏。提前谢谢。
答案 0 :(得分:3)
你必须使用二进制名称来引用内部类:com.foo.MyType $ Factory
答案 1 :(得分:1)
那么,您在界面Factory
中声明了内部类MyType
?如果我有这个权利,并且如果Factory
是'MyType'声明的唯一成员类,并且如果我理解你正在寻找什么,那么以下内容应该有效。
clz.getDeclaredClasses( )[0].newInstance( );
编辑:测试了我的答案,它确实有效。我不知道Pangea提到的技术,但这也有效,而且它比我的回答更好。代码看起来像这样。
Class.forName("MyType$Factory").newInstance( );