java反射机制的运用

类的加载:当程序使用某个类的时候,如果该类没有加载到内存中,则系统会通过加载,连接,初始化,三个步骤来实现对这个类进行初始化。

      加载:就是将class文件读入到内存,并为之创建一个class对象。

      连接:1.验证:是否有正确的内部结构,并和其他类协调一致。

                 2.准备:负责为类的静态成员分配内存,并设置默认的初始化值。

                 3.解析:将类的二进制数据中的符号引用替换为直接引用。

     初始化:分为java类的初始化,和对象的初始化。

反射的作用:动态提取某个类的信息。最大的好处就是:在开发中如果需要动态加载程序集的时候,可以使用反射动态获取所需类的信息。

反射机制的作用:

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

          2.通过反射机制访问java对象的属性,方法,构造方法等

具体实现:

  class类:  成员变量  Field   构造方法   Constructor  成员方法 Method

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


[java] view plain copy print ?
  1. //第一种方式:  
  2. Classc1 = Class.forName("Employee");  
  3. //第二种方式:  
  4. //java中每个类型都有class 属性.  
  5. Classc2 = Employee.class;  
  6.    
  7. //第三种方式:  
  8. //java语言中任何一个java对象都有getClass 方法  
  9. Employeee = new Employee();  
  10. Classc3 = e.getClass(); //c3是运行时类 (e的运行时类是Employee)  

 

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

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


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

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

[java] view plain copy print ?
  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); 


你可能感兴趣的:(java反射机制的运用)