如何通过Java Reflection实现这种情况:
RequestDocument req = RequestDocument.Factory.newInstance();
我知道如何搜索一个类并实例化它,但在这种情况下,我不确定新实例之前的.Factory.
。
答案 0 :(得分:0)
正确的方法是:
RequestDocument req = Factory.class.newInstance();
但当然:当你已经知道包/工厂类;你不应该使用反射。你只需致电
RequestDocument req = new RequestDocument.Factory();
,而不是!
答案 1 :(得分:0)
假设Factory
是静态嵌套类 RequestDocument
而newInstance
是公共静态方法,相当于那么使用反射的代码就是:
Object req = Class.forName("my.package.RequestDocument$Factory")
.getMethod("newInstance")
.invoke(null);
请注意$
用于表示它是一个内部类,null
用作我们想要调用该方法的对象,因为它是静态调用,因此不需要实例。< / p>