黑马程序员————反射

概述

反射技术:

        Java反射机制是在运行状态中,对于任意一个类,都能够知道这个类中的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

        简单一句话:反射技术可以对类进行解剖。

   反射机制获取类有三种方法,我们来获取Employee 

  1. //第一种方式:  
  2. Classc1 = Class.forName("Employee");  
  3. //第二种方式:  
  4. //java中每个类型都有class 属性.  
  5. Classc2 = Employee.class;  
  6.    
  7. //第三种方式:  
  8. //java语言中任何一个java对象都有getClass 方法  
  9. Employeee = new Employee();  

 

  2,创建对象:获取类以后我们来创建它的对象,利用newInstance

 
  1. Class c =Class.forName("Employee");  
  2.   
  3. //创建此Class 对象所表示的类的一个新实例  
  4. Objecto = c.newInstance(); //调用了Employee的无参数构造方法.  



 

    3,获取属性:分为所有的属性和指定的属性:

      a,先看获取所有的属性的写法:

 

 
    1. //获取整个类  
    2.             Class c = Class.forName("java.lang.Integer");  
    3.               //获取所有的属性?  
    4.             Field[] fs = c.getDeclaredFields();  
    5.        
    6.                    //定义可变长的字符串,用来存储属性  
    7.             StringBuffer sb = new StringBuffer();  
    8.             //通过追加的方法,将每个属性拼接到此字符串中  
    9.             //最外边的public定义  
    10.             sb.append(Modifier.toString(c.getModifiers()) + " class " + c.getSimpleName() +"{\n");  
    11.             //里边的每一个属性  
    12.             for(Field field:fs){  
    13.                 sb.append("\t");//空格  
    14.                 sb.append(Modifier.toString(field.getModifiers())+" ");//获得属性的修饰符,例如public,static等等  
    15.                 sb.append(field.getType().getSimpleName() + " ");//属性的类型的名字  
    16.                 sb.append(field.getName()+";\n");//属性的名字+回车  
    17.             }  
    18.       
    19.             sb.append("}");  
    20.       
    21.             System.out.println(sb);  

posted on 2015-12-08 14:30  波克壹号  阅读(128)  评论(0)    收藏  举报

导航