Java 使用xmlbeans时使用反射创建实例

Java 使用xmlbeans时使用反射创建实例,java,reflection,xmlbeans,Java,Reflection,Xmlbeans,我有一个xsd文件,其中定义了100多种类型。我使用xmlbeans绑定生成了java代码,然后可以使用 MyType.Factory.newInstance(); 获取类实例。但由于类型太多,我决定使用反射为每种类型创建实例 我现在可以使用 Class clz = Class.forName("com.foo.MyType"); 但是不知道如何在MyType接口中定义工厂类,然后获取新实例 如有任何意见或暗示,我们将不胜感激。提前感谢。那么,您的接口中声明了一个内部类工厂?如果我有这项权利

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

MyType.Factory.newInstance();
获取类实例。但由于类型太多,我决定使用反射为每种类型创建实例

我现在可以使用

Class clz = Class.forName("com.foo.MyType");
但是不知道如何在MyType接口中定义工厂类,然后获取新实例


如有任何意见或暗示,我们将不胜感激。提前感谢。

那么,您的接口中声明了一个内部类
工厂
?如果我有这项权利,并且如果工厂是“MyType”声明的唯一成员类,并且如果我理解您要查找的内容,那么下面的操作应该有效

clz.getDeclaredClasses( )[0].newInstance( );
编辑:对我的答案进行了测试,效果良好。我不知道Pangea提到的技术,但这也行得通,而且比我的答案要好。代码如下所示

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

因此,在接口中声明了一个内部类
工厂
?如果我有这项权利,并且如果工厂是“MyType”声明的唯一成员类,并且如果我理解您要查找的内容,那么下面的操作应该有效

clz.getDeclaredClasses( )[0].newInstance( );
编辑:对我的答案进行了测试,效果良好。我不知道Pangea提到的技术,但这也行得通,而且比我的答案要好。代码如下所示

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

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

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

您可以发布整个工厂类(或更多工厂类)以及您希望实例化的类吗?您可以发布整个工厂类(或更多工厂类)吗您希望实例化哪些类?