Java 反射 - 实例化异常接口
Java Reflection - Instantiation Exception Interface
如何用Java反射实现这种情况:
RequestDocument req = RequestDocument.Factory.newInstance();
我知道如何搜索 class 并实例化它,但在这种情况下,我不确定新实例之前的 .Factory.
。
正确的方法是:
RequestDocument req = Factory.class.newInstance();
但当然:当您已经知道时 package/Factory class;你不应该使用反射。你只需调用
RequestDocument req = new RequestDocument.Factory();
相反!
假设 Factory
是 静态嵌套 class 的 RequestDocument
并且 newInstance
是 public static 方法,你的代码使用 reflection 的等价物是:
Object req = Class.forName("my.package.RequestDocument$Factory")
.getMethod("newInstance")
.invoke(null);
请注意 $
用于指示它是一个内部 class 和 null
用作我们要调用该方法的对象,因为它是静态调用所以不需要实例。
如何用Java反射实现这种情况:
RequestDocument req = RequestDocument.Factory.newInstance();
我知道如何搜索 class 并实例化它,但在这种情况下,我不确定新实例之前的 .Factory.
。
正确的方法是:
RequestDocument req = Factory.class.newInstance();
但当然:当您已经知道时 package/Factory class;你不应该使用反射。你只需调用
RequestDocument req = new RequestDocument.Factory();
相反!
假设 Factory
是 静态嵌套 class 的 RequestDocument
并且 newInstance
是 public static 方法,你的代码使用 reflection 的等价物是:
Object req = Class.forName("my.package.RequestDocument$Factory")
.getMethod("newInstance")
.invoke(null);
请注意 $
用于指示它是一个内部 class 和 null
用作我们要调用该方法的对象,因为它是静态调用所以不需要实例。