反射机制 反射API 反射的优缺点 反射的应用场景

反射机制

java类加载机制

类加载步骤:

1)JVM将.class文件读入内存方法区
2)JVM为.class创建唯一的Class类的对象(堆中)【为以后访问方法去中的.class文件提供入口】

通过Class对象可反向做很多事

(1)可生成类的实例:Class.forName(完整的类名).newInstance();

反射的定义

反射Reflection:在运行状态中,对于任意一个类都能够知道这个类所有的属性和方法;并且对于任意一个对象,都能够调用它的任意一个方法;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制

深入理解

1)反射使我们在运行时看清一个类的运行情况并使用
2)反射是java被视为动态或准动态语言的关键特性
3)反射允许程序在运行时加载、探查、使用一个在编译期可能未知的类

反射API

java.lang包中:
1)Class类:反射核心类,可获取类的属性、方法等信息,生成类的实例
java.lang.reflect包
2)field类:表示类的成员变量,可用来获取和设置类的属性值
	Method类:标识类的方法,可用来获取类中的方法信息或执行方法
	Constructor类:表示类的构造方法

获取Class对象的三种方法

1)通过Class.forName(完整类名);//返回一个Class对象【更常用,对于编译期并不知道对象类型,而在运行期对	其操作】
2)通过对象实例的getClass()获取
3)通过类的class属性:例如:Class c3 = person.class;

获取属性

1)getFields()---所有可访问的公共字段	
2)getDeclaredFields()---所有字段
3)getField(String name)--返回一个特定的公共字段对象

获取方法

1)getMethods()-所有公共方法,包括从超类和接口继承的声明
2)getDeclaredMethods-所有方法,包括公共,保护,默认访问和私有方法,但是不包括继承的方法
3)getMethod(String name,Class[] parameterTypes)-返回一个方法对象

通过反射实现应用解耦

实现步骤:
1、获取类的构造方法
2、通过该类地构造方法,生成该类的实例
3、调用该实例的方法

反射的优缺点

优点

1)运行期类型的判断,动态加载
2)提高了程序的灵活性、扩展性、降低耦合性
3)提高自适应能力,无需提前硬编码目标类

缺点

1)性能问题
2)  安全限制
3)内部暴露

反射的应用场景

1、反射机制是目前众多Java框架实现的基础
	1)JDBC
	2)Hibernate
	3)Spring AOP、IOC
	4)分布式微服务
2、实现项目安装插件功能
3、基于反射,架构师搭建项目框架,自行封装框架,使得项目更加组件化和通用化
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值