初入反射技术

本文详细介绍了Java反射的基本概念,包括如何加载类、获取Class对象、构造器、成员变量和方法,以及其在框架设计中的作用。以ObjectFrame为例,展示了如何通过反射实现对象字段值的保存功能。
摘要由CSDN通过智能技术生成

反射位于Java提供的java.lang.reflect包下
反射:加载类,并且允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等)
反射主要用于制作框架。
反射第一步加载类,第二部获取对象

获取对象

  • 获取类的字节码,即获得Class对象
  • 获取类的构造器,即获得Constructor对象
  • 获取类的成员变量,即获得Field对象
  • 获取类的成员方法,即获得Method对象

获取Class对象的三种方法

Class c1 = 类名.class
调用Class提供方法:public static Class forName(String package)使用类的包名
Object提供的方法:public Class getClass(); Class c3 = 对象.getClass();

获取类的构造器

采用第三、第四个方法的所需参数为所查询类的构造器的参数类型类,如String.class、int.class等。
获取构造器作用:初始化对象返回
在这里插入图片描述我们使用newInstance后要强转为我们所创建的类的类型
若在使用newInstance之前使用setAccessible,则不检查构造器是否私有,等于破环封装性

获取类的成员变量

在这里插入图片描述
获取成员变量的作用:赋值、取值
在这里插入图片描述

set()的两个参数:第一个 填入类名,第二个填入要赋的值

获取类的成员方法

在这里插入图片描述要单独获取某个方法时,参数要传入方法名和参数列表的类型。
获取成员方法的作用:执行
在这里插入图片描述

作用和应用场景

基本作用:可以得到一个类的全部成分然后操作、可以破坏封装性、适合做Java的框架,基本上主流的框架都会基于反射设计出一些通用的功能。

应用场景举例

写一个对于任意对象都可以将对象的字段名和对应的值,保存到文件中的框架
步骤:

  • 定义一个方法,可以接受任意对象
  • 每收到一个对象后,使用反射获取该对象的Class对象,然后获取全部的成员变量。
  • 遍历成员变量,然后提取成员变量在该对象中的具体值。
  • 把成员变量名、值,写入到文件中。
public class ObjectFrame{
	public static void saveObject(Object obj){
	PrintSteam ps = new PrintSteam(new FileOutoutSteam("文件路径", true)); 
		Class c = obj.getClass();//获取类对象
		//从这个类中提取全部成员变量
		Field[] fields = c.getDeclaredFields();
		//遍历
		for(Field field : fields){
			//获得成员变量的名字
			String name = field.getName();
			field.setAccessible(true);
			//获得这个变量的值
			String value = field.get(obj) + "";//转为字符串类型
			ps.println(name + "=" + value);
		}
	}
}
  • 16
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值