Java中兩個使用invoke方法的例子

范例1:

import java.lang.reflect.Method;

public class InvokeTester{


public int add(int param1,int param2){
return param1+param2;
}


public String echo(String msg){
return "echo" + msg;
}


public static void main(String[] args)throws Exception{
Class classType = InvokeTester.class;
Object invokertester = classType.newInstance();
Method addMethod = classType.getMethod("add",new Class[]{int.class,int.class});
Object result = addMethod.invoke(invokertester,new Object[]{new Integer(100),new Integer(200)});
System.out.println(result);
Method echoMethod = classType.getMethod("echo",new Class[]{String.class});
result = echoMethod.invoke(invokertester,new Object[]{"hello"});
System.out.println(result);
}

}

范例2:

import java.lang.reflect.*;
public class MethodPointerTest{
public static void main(String[] args)throws Exception{
//get method pointers to the square and sqrt methods
Method square = MethodPointerTest.class.getMethod("square",double.class);
Method sqrt = Math.class.getMethod("sqrt",double.class);


//print tables of x- and y-values
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){
//print out the method as table header
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);
System.out.printf("%10.4f|%10.4f%n",x,y);
}catch(Exception e){
e.printStackTrace();
}
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值