Java反射 - 实例化异常接口

时间:2016-09-26 09:42:42

标签: java reflection instantiation

如何通过Java Reflection实现这种情况:

RequestDocument req = RequestDocument.Factory.newInstance();

我知道如何搜索一个类并实例化它,但在这种情况下,我不确定新实例之前的.Factory.

2 个答案:

答案 0 :(得分:0)

正确的方法是:

RequestDocument req = Factory.class.newInstance();

但当然:当你已经知道包/工厂类;你不应该使用反射。你只需致电

RequestDocument req = new RequestDocument.Factory();

,而不是!

答案 1 :(得分:0)

假设Factory静态嵌套类 RequestDocumentnewInstance公共静态方法,相当于那么使用反射的代码就是:

Object req = Class.forName("my.package.RequestDocument$Factory")
    .getMethod("newInstance")
    .invoke(null);

请注意$用于表示它是一个内部类,null用作我们想要调用该方法的对象,因为它是静态调用,因此不需要实例。< / p>