Spring—反射

简介:
JavaScript,Ruby,Python等属于动态语言,C,C++不属于动态语言,Java属于半动态语言。

反射机制是指程序在运行过程中,对任意一个类都能获取其所有的属性和方法,并且对任意一个对象都能调用其任意一个方法。这种动态获取类和对象的信息,以及动态调用对象和方法的功能被称为Java语言的反射机制。

使用反射生成操作对象
1.使用class对象的new Instance()方法来创建该Class对象对应的实例,这种方法要求该Class对象的对应类有默认构造器,在执行new Instance()方法时实际上是利用默认的构造器来创建该类的实例。

2.先使用Class类对象获取指定的Constructor对象,在调用Constructor对象的new Instance()方法来创建该class对象对应的实例。通过该种方法可以选择使用某个类的指定构造器来创建实例。

使用构造器创建Java对象
如果要利用指定的构造器创建Java对象,需要利用Constructor关键字去,因为每个constructor都对应一个构造器,为了利用构造器创建对象,需要经历四个步骤:
1.引入jar包,并引入该类
2.获取该类的class对象
3.利用Class对象的get Constructor()方法来获取指定构造器。
4.调用Constructor的new Instance()方法来创建Java对象

调用方法
当获得某个类对应的Class对象后,可以通过该Class对象的get Methods()方法或者get Methods()方法或者get Method()方法来获取全部方法或者指定方法,这两个方法的返回值是Method对象数组,或者Method对象。

每个Method对象对应一个方法获得Method对象后,程序就可以通过该method来调用对应方法。在method里包涵一个invoke方法,签名如下:
Object invoke(Object obj,Object…args):该方法中的obj是执行该方法的主调,后面的args是执行该方法时传入该方法的实参。

访问属性
通过Class对象的getFields()或者getField()方法可以获取该类所包含的全部Field属性或指定属性Field。Field提供了如下两组方法:
1.getxxx(Object obj):获取obj对象该Field的属性值,此处的xxx对应的八个类型,如果该属性的类型是引用类型则取消get后面的xxx。

2.setxxx(Object obj xxx val):将obj对象的该Field设置成val值,此处的xxx对应八个基本类型,如果该属性的类型是引用类型则取消set后面的xxx。
使用这两个方法可以随意的访问指定对象的所有属性,包括private指定的属性。

static void sexxx(Object array,int index,xxx val):将array数组中的index元素的值设置为val,则该方法改变为get(Object array,int index,Object val)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值