论 反射机制 二

反射的应用:
 通过反射获取类的信息分为两步,首先获取Class对象,然后通过Class对象获取信息

1、获取Class对象
        每个类被加载之后,系统就会为该类生成一个对应Class对象,通过Class对象就可访问到java虚拟机中的这个类。java程序中获取Class对象通常有如下3中方式。
1)通过对象的getClass()方法
   getClass()是java.lang.Object类中的一个方法,所有的java对象都可以调用该方法,该方法返回对象所属类对应的Class对象。使用方式 如下代码。
             Student p = new Student(); //Student为自定义的学生类型
           Class cla = p.getClass();  //Cla为Class对象
2)调用类的Class属性
  通过调用某个类的Class属性可获取该类对应的Class对象,这种方式需要在编译就知道该类名称,使用方式如下代码:
              Class cla = Student.class;//Student为自定义的学生类型
 3)使用Class类的forName()静态方法
   使用Class类的forName()静态方法也可以获取该类对应的Class对象。该方法需要传入字符串参数,该字符串参数的值是某个类的全名,即要在类名前添加完整的包名。
           try {
Class cla = Class.forName("com.test.Student");
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
  如果传入的字符串不是某个类的全名,就会抛出一个ClassNotFoundException异常


 后两种方式都是直接根据类来取得该类的Class对象,相比之下调用某个类的class属性来获取该类对象的Class对象这种方式更加有优势。原因有如下两点:
     代码更安全。程序在编译阶段就可以检查需要访问的Class对象是否存在
     程序性能更高,因为这种无需调用方法,所以性能更好。
  因此,大部分都应该使用调用某个类的class属性的方式来获取指定类的Class对象。

2、从Class对象获取信息

     在获得了某个类所对应的Class对象之后,程序就可以调用Class对象的方法来获得该类的真实信息。Class类提供了大量实例方法来获取Class对象对应类的详细信息
   1、访问Class对应的类所包含的构造方法
   2、访问Class对应的类所包含的方法。
   3、访问Class对应的类所包含的属性。
   4、访问Class对应的类所包含的注释
   5、访问Class对应的类的其他信息。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值