Java 反射的一些用法

本文介绍了Java反射的基本原理和应用场景。通过反射,可以获取类的字节码对象,访问和操作类的成员变量及执行类方法。在实际工作中,反射可用于动态修改类的行为,提高代码的灵活性和可扩展性。
摘要由CSDN通过智能技术生成

前言

java反射之前只是听说而一直没有使用过,最近是在工作中,leader要我将检索条件封装成类,并要求之后如果需要拓展检索条件的话,只需要更改封装的类,提高可用性,这时候我就想到了反射。

原理

简单来说,java反射就是通过一定的方法获取该类的字节码对象(class对象),也就是.class文件,JVM在加载类是首先会在堆中创建类的.class对象,作为访问类静态变量/方法的接口。

获取字节码对象的方法

1、调用Class.forName(类的路径)方法
2、调用对象.getClass()方法

类的成员变量
// An highlighted block
// 获取类名
String strName01 = clazz.getName();// 获取完整类名
String strName02 = clazz.getSimpleName();// 直接获取类名 Query
		
// 获取属性
Field[] field01 = clazz.getFields(); // 返回属性为public的字段
Field[] fields = clazz.getDeclaredFields(); // 返回所有的属性
Field field03 = clazz.getDeclaredField("id"); // 获取属性为id的字段
		
// 获取普通方法
Method[] Method01 = clazz.getDeclaredMethods(); // 返回类中声明的方法
Method[] Method02 = clazz.getMethods(); // 返回类中的所有public方法
执行类方法
// get 方法
Method method1 = clazz.getDeclaredMethod("getId", null); // 返回getId这个方法,如果没有参数,就默认为null
Integer item = (Integer)method1.invoke(对象)
//set 方法
Method method2 = clazz.getDeclaredMethod("setId", int.class); // 返回getId这个方法,如果没有参数,就默认为null
method2.invoke(对象,102)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值