注册
 找回密码
 注册
江西广告网
查看: 251|回复: 0
打印 上一主题 下一主题

RTTI Reflection总结

[复制链接]

该用户从未签到

1
跳转到指定楼层
发表于 2009-2-12 09:00:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
package com.cxz.thinking.act10; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Random; class method{ public int sum (Integer a, Integer b){ return a b; } public int minus(Integer a, Integer b){ return a - b; } public int plusplus(Integer a){ return a; } public double show(Double dbl){ return dbl 100; } } package com.cxz.thinking.act10; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Random; class method{ public int sum (Integer a, Integer b){ return a b; } public int minus(Integer a, Integer b){ return a - b; } public int plusplus(Integer a){ return a; } public double show(Double dbl){ return dbl 100; } } [1] [2] package com.cxz.thinking.act10; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Random; class method{ public int sum (Integer a, Integer b){ return a b; } public int minus(Integer a, Integer b){ return a - b; } public int plusplus(Integer a){ return a; } public double show(Double dbl){ return dbl 100; } } Java代码 public class DynamicInvoke { public static void main(String[] args) throws ClassNotFoundException, IllegalAccessException, InstantiationException, InvocationTargetException, IllegalArgumentException { Class myCls = Class.forName("com.cxz.thinking.act10.method");//动态加载 Object obj = myCls.newInstance();//创建一个method对象Method.invoke()的第一个参数需要 Method[] methods = myCls.getDeclaredMethods();//得到全体方法数组 for( int i = 0; i < methods.length; i ){ Class[] paramType = methods.getParameterTypes();//get the type of each param Object[] paramValue = new Object[paramType.length];//set the values在下文写如数据 Random rand = new Random(); for(int j = 0; j < paramType.length; j ){ if(paramType[j] == Integer.class){//本程序的参数仅仅限与Integer,和Double类 paramValue[j] = rand.nextInt();//动态生成10以下 } else if(paramType[j] == Double.class){ paramValue[j] = rand.nextDouble();//动态生成控制在10以下 } } String params = ""; for(int k = 0; k < paramType.length; k ){ params = paramValue[k].toString() ","; } params = params.substring(0, params.length() - 1); params = "[ " params " ]"; System.out.println("{" methods.toString() "}" params methods.invoke(obj, paramValue));//开始调用invoke调用 } } 上一页 [1] [2]
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表