好的,我确实了解 Java 反射是如何工作的。但是我所做的与反射教程中显示的有点不同。现在我想在下面调用一个方法,该方法通过使用反射调用方法返回。
class Foo{
private String str = "";
public Foo(String str){
str = this.str;
}
public void goo(){
System.out.println(this.str);
}
}
class Bar{
public Foo met(String str){
return new Foo(str);
}
}
class Hee{
public static void main(String [] args) throws Exception{
Class cls = Class.forName("Bar");
Object obj = cls.newInstance();
Class [] types = {String.class};
String [] arr = {"hello"};
Method method = cls.getMethod("met",types);
Object target = method.invoke(obj, arr);
target.goo(); //here where the error occurs
// 123456
}
}
现在,我很大程度上依赖于我的经验,即我method.invoke()
将返回由反映的方法返回的方法返回的对象。但似乎它不起作用..我调试了我的代码,似乎它没有返回任何东西。我做错了什么?如果我做错了什么请告诉我