java 反射

反射的作用:

  1. 反编译:.class-->.java

  2. 在运行状态中,通过反射机制访问java对象的属性,方法,构造方法等;

反射的实现

//第一种方式:  
Class c1 = Class.forName("Employee");  
//第二种方式:  
//java中每个类型都有class 属性.  
Class c2 = Employee.class;  
   
//第三种方式:  
//java语言中任何一个java对象都有getClass 方法  
Employeee = new Employee();  
Class c3 = e.getClass(); //c3是运行时类 (e的运行时类是Employee)  

带构造参数的类反射

// 获得指定字符串类对象
        Class cl = Class.forName("com.test.User");
        //设置Class对象数组,用于指定构造方法类型  
        Class[] parameterTypes = new Class[] { String.class, int.class };
        
         //获得Constructor构造器对象。并指定构造方法类型  
        Constructor constructor = cl.getConstructor(parameterTypes);
          //给传入参数赋初值  
        Object[] parameter = { "lili", new Integer(15) };
          
        //得到实例 
        Object newInstance = constructor.newInstance(parameter);

 执行方法

        Class<?> class1 = Class.forName("com.test.User");
        
        Method method = class1.getMethod("getName");
        User newInstance = (User) class1.newInstance();
        newInstance.setName("crazy");
        // 执行方法,并返回方法的返回值
        Object result = method.invoke(newInstance);
        System.out.println("crazy:"+result);

 

posted @ 2017-07-17 19:30  newlangwen  阅读(173)  评论(0编辑  收藏  举报