热衷于使用通过反射获得的类 returnType 进行转换?

问题描述 投票:0回答:1

我正在使用反射来获取方法的返回类型,即 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";
  }

}
java reflection casting
1个回答
1
投票

为什么这条线不起作用。这不是和

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));
© www.soinside.com 2019 - 2024. All rights reserved.