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 静态嵌套 classRequestDocument 并且 newInstance public static 方法,你的代码使用 reflection 的等价物是:

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

请注意 $ 用于指示它是一个内部 class 和 null 用作我们要调用该方法的对象,因为它是静态调用所以不需要实例。