Java反射API

一、反射API的作用

    用来生成在当前JAVA虚拟机中的类、接口或者对象信息。

二、常用的反射类:

Class类:是反射的核心类,反射所有的曹组都是围绕该类生成的,他可以获取类的属性、方法等内容信息;

Field类:表示类的属性,他可以获取和设置类中属性的值;

Method类:表示类的方法,他可以用来获取类中方法的信息,或者执行方法;

Construct类:表示类的构造方法。

三、java反射API的应用:

    1、 利用反射获取指定类的方法、属性。

   例如,eclipse环境中,输入对象名。,自动罗列出对象的全部方法。

四、使用java反射机制的步骤:

导入java.lang.reflect包

1、获得想要操作的类的java.lang.Class对象;

2、调用Class类的诸如get***Methods这样的方法,以便得到对象的方法和属性;

3、使用反射API来操作这些信息;

我们知道,每隔类被加载后,系统就会为该类生成一个对应的Class对象,通过该Class对象就可以访问到java虚拟机中的这个类。

获取Class对象的方式,有以下三种:

A、调用某个对象的getClass()方法

     Person   p=new Person();

     Class  cla  = p.getClass();

    因为getClass方法是java.lang.Object类中的一个方法,所以所有的java对象都可以调用该方法,返回该对象所属类对应的Class对象。

   特点:不需要指定类的全路径;但是必须有一个前提——申请一个类的对象,然后调用这个对象的getClass方法来获得class对象。

   缺点:如果只定义了一个接口,但是并不知道他的实现类,因为接口不能初始化,就谈不上他的对象了,此时getClass()方法无能为力。

B、调用某个类的class属性来获取该类对应的Class对象

     Claas cla= Person.class;

    特点:

          这种方式,需要在编译期就知道类的名字;

          这种方式,代码更安全(因为程序在编译的时候就可以检查对象是否存在)、程序性能更高(无需调用方法)

C、使用Class类的forName()静态方法

    Class cla= Class.forName("com.pb.jadv.reflcetion.Person");

    这种方式,需要传入某个类的全名的字符串参数,否则会抛出异常。

 五、从Class类中获取信息

      get****####方法,如果有Declared字样,则可返回所有的方法或属性。如果没有,则只返回public方法或属性。

 

总的来说,只有程序需要动态创建某个类的对象时,才会考虑使用反射,通常在开发通用性比较广的框架基础平台时可能会大量使用反射。

在很多java EE框架中都需要根据配置文件信息来创建java对象。从配置文件中读取的只是某个类的字符串类名,程序想根据字符串来创建对应的实例,就必须使用反射。

Spring框架就应用了反射技术。

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值