反射的优点以及使用

一、反射的使用:

反射就是通过调用java的字节码文件(字节码是在编译时候就会产生,并且是属于java虚拟机“看的文件”)进行操作。

二、好处:

不用死板操作.java文件,同时配合给定的配置文件就可以对程序进行操作。而不需要改动代码。

利用反射调用它类中的属性和方法时,无视修饰符

使用反射创建对象,代码更复杂,功能更强大灵活

三、应用场景:

idea的智能提示,是框架 Spring、SpringMVC、Mybatis 等的底层原理等等

四、反射的创建:三种创建方式

1.通过类名创建。                                                         类名.class

2.通过对象名 使用getClass()方法创建。                 对象.getClass()

3.通过使用forName方法创建。                                    Class.forName("类全名")

 五、反射对类中各个属性方法的使用:

成员变量Field(Field[ ])、成员方法Method(Method[ ])、构造方法Construction(Construction[ ])

 六、反射获取构造方法(构造器)

1.Constructor<?>[ ] getConstructors():返回public修饰的所有构造方法对象的数组(也会获取父类的

2.Constructor<T> getConstructor(Class<?>... parameterTypes):返回public修饰的单个构造方法对象

Declared(声明,即为自己定义的)parameter(变量)

3.Constructor<?>[ ] getDeclaredConstructors():返回任意权限的所有构造方法对象的数组

4.Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes):返回任意权限的单个构造方法对象

 简单记忆:有加上s的为复数,就不用加上参数(没有加s就是特定的某一个,那就有参数加参数),有加上声明的就是自己定义的就能获取全部类型的构造方法(不管是public还是private)。

注:要获取私有的还要讲这个构造方法设置为setAccessible(true),设置为true 表示允许对私有权限的访问

newInstance(Object... initargs):根据指定的构造方法创建对象

不过构造器通常不会设置为私有,因为构造器使用创建对象用的,基本上都是public的。这里的说明跟方法(Method)一样适用。

七、反射获取成员方法

Method[ ] getMethods():返回所有public的成员方法对象的数组,包括继承的。

Method getMethod(String name, Class<?>... parameterTypes) :返回单个public的成员方法对象。

参数name:表示方法名 ;参数parameterTypes:表示方法的形参类型

Method[ ] getDeclaredMethods():返回所有成员方法对象的数组,不包括继承的

Method getDeclaredMethod(String name, Class<?>... parameterTypes):返回单个成员方法对象。

具体说明跟上面一样。

八、反射获取成员变量

Field getField(String name):返回单个公共成员变量对象

Field[ ] getFields():返回所有公共成员变量对象的数组,包括继承的public成员变量

Field getDeclaredField(String name):返回单个成员变量对象

Field[ ] getDeclaredFields():返回所有本类成员变量对象的数组。不包括继承的

void set(Object obj, Object value):赋值。参数obj为成员变量所在的对象,参数value为成员变量的值

Object get(Object obj) :获取值。参数obj为成员变量所在的对象

九、其他补充

Class类中的方法:

String getSimpleName()获得类名

String getName()获得类全名:包名+类名

 十、综合运用案例

 部分代码说明:

1.这里没有进行try.....catch处理异常,先跑出去了

2.这里通过属性集配合配置文件进行操作。(通过属性集跟IO流的操作,获取配置文件里面给定的数据)

3.这个代码演示的是通过配置文件执行方法(即修改配置文件不需要修改代码,当然这里是最简单的演示,还是有需要改进的)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值