使用Java反射的getReturnType()来创建该类型的新对象

Avr*_*dis 0 java reflection

我想知道我是否可以使用返回类型的java的反射方法getReturnType()来创建该类型的对象.

我有一个返回String的方法,假设我们在运行时不知道,所以我调用它getReturnType()来确定方法返回的对象类型:

Method myMethod = Book.class.getDeclaredMethod("printName");
Type myType = myMethod.getReturnType();
Run Code Online (Sandbox Code Playgroud)

我想知道是否可以使用它myType来创建新对象或我该怎么做?我试过mytype something = new mytype();但是错了.

Sot*_*lis 5

首先,Method#getReturnType()声明为这样

 Class<?> java.lang.reflect.Method.getReturnType()
Run Code Online (Sandbox Code Playgroud)

并且javadoc声明它

返回一个Class对象,该Method对象表示此对象表示的方法的正式返回类型.

Class类提供了一个newInstance()可以使用无参数的构造函数创建一个实例,也可以使用该方法Class#getDeclaredConstructors()的方法来得到一个列表Constructor实例,并用自己的newInstance(Object...)方法来创建代表的类的实例.

您将无法创建该类型的变量,因为在编译时类型是未知的.