月夜愁 发表于 2009-2-6 09:34:33

RTTI Reflection总结

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;
      }
    }
   
   
                  
    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;//set the values在下文写如数据
            Random rand = new Random();
            for(int j = 0; j < paramType.length; j){
            if(paramType == Integer.class){//本程序的参数仅仅限与Integer,和Double类
                paramValue = rand.nextInt();//动态生成10以下
            } else if(paramType == Double.class){
                paramValue = rand.nextDouble();//动态生成控制在10以下
            }
            }
            String params = "";
            for(int k = 0; k < paramType.length; k){
             params= paramValue.toString() ",";
            }
            params = params.substring(0, params.length() - 1);
            params = "[ " params " ]";
            System.out.println("{" methods.toString()   "}" paramsmethods.invoke(obj, paramValue));//开始调用invoke调用
          }
      }
    上一页
页: [1]
查看完整版本: RTTI Reflection总结