java反射机制的运用

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

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

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

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

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

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

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

反射机制的作用:

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

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

具体实现:

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

  1.反射机制获取类有三种方法,我们来获取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();  
  10. Classc3 = e.getClass(); //c3是运行时类 (e的运行时类是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); 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值