我正在使用反射来获取方法的返回类型,即 String。 当我调用函数时,我需要将返回值转换为字符串。 如何在不显式使用 String 而是使用通过反射获得的 returnType 的情况下做到这一点?
为什么这条线不起作用。这不是和 String.class.cast() 一样吗
Class.forName("String").cast(method2.invoke(personObject, "Susan", 40));
Main.java
//GET METHOD BY NAME & PARAMETER TYPES
Class[] parameterTypes = new Class[] {String.class, int.class};
Method method2 = personClass.getDeclaredMethod("sayHelloTo", parameterTypes);
Class returnType = method2.getReturnType();
String hello1 = (String) method2.invoke(personObject, "Susan", 40);
String hello2 = (java.lang.Strin) method2.invoke(personObject, "Susan", 40);
String hello2 = String.class.cast(method2.invoke(personObject, "Susan", 40));
String hello2 = Class.forName("String").cast(method2.invoke(personObject, "Susan", 40));
Person.java
public class Person {
public String sayHelloTo(String name, int age) {
return "Hello " + name + ", you are " + age + " years old";
}
}
为什么这条线不起作用。这不是和
一样吗String.class.cast()
Class.forName("String").cast(method2.invoke(personObject, "Susan", 40));
不,因为
String
不是有效的类名,您应该使用 java.lang.String
代替
Class.forName("java.lang.String").cast(method2.invoke(personObject, "Susan", 40));