请教一下Method.invoke方法
java.lang.reflect.Method
public Object invoke(Object obj,Object... args)
参数:
obj - 从中调用底层方法的对象
args - 用于方法调用的参数
返回:
使用参数 args 在 obj 上指派该对象所表示方法的结果
我想问一下这个方法到底是什么意思 比方说 methodObj.invoke(Object obj,Object...args)
我知道methodObj是一个Method类型的对象 其实就相当于某个类的一个方法 到底args是这个方法的参数 还是这个方法是args里定义的一个方法
我看Core java 7th里的例子感觉有些不太明白
P195:
invoke方法的签名是:
Object invoke(Object obj,Object...args)
...
对于静态方法,第一个参数可以被忽略,即可以将它设置为null
例如,假设用mI代表Employee类的getName方法,下面这条语句显示了调用这个方法的格式:
String n=(String)m1.invoke(harry);
...
例如,假设m2代表Employee类的getSalary方法,那么返回的实际类型是Double,因此必须相应的进行类型转换。
double s=(Double)m2.invoke(harry);
=======================================
这里的harry是一个Employee类型的对象 Employee harry=new Employee("Harry Hacker",35000,10,1,1989);
这样看上去String n=(String)m1.invoke(harry);相当于调用harry.getName()
然后再看P196页的例子
Java code
import java.lang.reflect.*;
public class MethodPointerTest {
public static void main(String[] args)throws Exception{
Method square=MethodPointerTest.class.getMethod("square", double.class);
Method sqrt=Math.class.getMethod("sqrt", double.class);
printTable(1,10,10,square);
printTable(1,10,10,sqrt);
}
public static double square(double x){
return x*x;
}
public static void printTable(double from,double to,int n,Method f){
System.out.println(f);
double dx=(to-from)/(n-1);
for (double x=from;x<=to;x+=dx){
try{
double y=(Double)f.invoke(null, x);
[color=#FF0000]//我不能明白的就是这里了 这里相当于调用square(x) 而前面的例子的格式是x.square[/color]
System.out.printf("%10.4f|%10.4f%n",x,y);
}
catch (Exception e){
e.printStackTrace();
}
}
}
}
麻烦用通俗语言教我一下2个参数和返回结果都是什么东西 谢谢
------解决方案--------------------
没有看明白
//我不能明白的就是这里了 这里相当于调用square(x) 而前面的例子的格式是x.square
这句话最后在说什么