java反射机制学习

反射机制的作用

比如我们现在要修改main函数里面的一个对象

A a=new  A();
 改成
B b= new B();

我们直接改代码是可以的,但是如果有上百个类似的修改,就十分不方便了
那么就可以用反射机制,不用修改源码,直接修改配置文件即可,也就相当于解耦
现在很多框架比如spring中都是用反射机制。

先了解什么是类对象

类对象概念: 所有的类,都存在一个类对象,这个类对象用于提供类本身的信息,比如有几种构造方法, 有多少属性,有哪些普通方法。

获取类对象
获取类对象有3种方式

  1. Class.forName(类名)
  2. 类名.class
  3. new 类名().getClass()
    在一个JVM中,一种类,只会有一个类对象存在。所以以上三种方式取出来的类对象,都是一样的。
    在这里插入图片描述

反射机制创建对象

与传统的通过new 来获取对象的方式不同
反射机制,会先拿到一个类的“类对象”,然后通过类对象获取“构造器对象”
再通过构造器对象创建一个对象
在这里插入图片描述

反射机制访问属性

获得字段用getField和getDeclaredField方法

getField和getDeclaredField的区别
这两个方法都是用于获取字段
getField 只能获取public的,包括从父类继承来的字段。
getDeclaredField 可以获取本类所有的字段,包括private的,但是不能获取继承来的字段。
具体区别可以百度
在这里插入图片描述

反射机制调用方法

调用方法使用getMethod方法
getMethod和invoke方法的具体使用就不阐述了,可以查看相关文档
在这里插入图片描述

最后

很明显,我们只要知道这个类的名字,就可以对这个类进行一系列的操作
所以我们可以写一个配置文件比如叫 abc.config,在里面写上类的名字和方法
然后在java代码中读取配置文件就可以进行对类的操作,这个是传统new 对象无法实现的。
如果需要修改,也只需修改配置文件即可,就这就反射机制的优势

参考文章:http://how2j.cn/k/reflection/reflection-class/108.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值