Java反射——访问成员变量

反射通过Java的反射机制,可以在程序中访问已经装载到JVM中的Java对象的描述,实现访问,检测和修改描述Java对象本身信息的功能。通过反射可以访问构造方法,成员变量,和成员方法。访问构造方法:https://blog.csdn.net/javanofa/article/details/104732594访问成员变量利用Field对象可以操作相应的成员变量。Field类的常用方法:...
摘要由CSDN通过智能技术生成

反射

通过Java的反射机制,可以在程序中访问已经装载到JVM中的Java对象的描述,实现访问,检测和修改描述Java对象本身信息的功能。通过反射可以访问构造方法,成员变量,和成员方法。

访问构造方法:Java反射——访问构造方法
访问成员方法:Java反射——访问成员方法

访问成员变量

利用Field对象可以操作相应的成员变量。
在这里插入图片描述
Field类的常用方法:

方法 说明
getName() 获取成员变量的名称
getType() 获得表示该成员变量类型的class对象
get(Object obj) 获得指定对象obj中成员变量的值,返回值为Object型
set(Object obj, Object value) 将指定对象obj中成员变量的值设为value
getInt(Object obj) 获得指定对象obj中类型为int的成员变量的值
setInt(Object obj, int i) 将指定对象obj中类型为int的成员变量的值设置为i
getFloat((Object obj)) 获得指定对象obj中类型为float的成员变量的值
setFloat(Object obj, float f) 将指定对象obj中类型为float的成员变量的值设置为f
getBoolean(Object obj) 获得指定对象obj中类型为Boolean的成员变量的值
setBoolean(Object obj, boolean z) 将指定对象obj中类型为Boolean的成员变量的值设置为z
setAccessible(boolean flag) 此方法可以设置是否忽略权限限制直接访问private等私有权限的成员变量
getModifiers() 获得可以解析出该成员变量所采用修饰符的整数

getModifiers()方法的返回值是所表示的修饰符信息,在该类中提供了一系列用来解析的静态方法,既可以查看是否被指定的修饰符修饰,还可以以字符串的形式获得所有修饰符。

Modifier类中的常用解析方法:

静态方法 说明
isPublic(int mod) 查看是否被public修饰符修饰,如果是返回true,反之返回false
isProtected(int mod) 查看是否被protected修饰符修饰,如果是返回true,反之返回false
isPrivate(int mod) 查看是否被private修饰符修饰,如果是返回true,反之返回false
isStatic(int mod) 查看是否被static修饰符修饰,如果是返回true,反之返回false
isFinal(int mod) 查看是否被Final修饰符修饰,如果是返回true,反之返回false
toString(int mod) 以字符串形式返回所有修饰符

获取和修改成员变量的值:
在这里插入图片描述
首先创建一个Study类,在该类中声明三个不同类型,不同修饰符的成员变量,并赋值。

public class Study {
   
	public int id = 1;
	public String name = "反射";
	private double price = 3.1315;

}

然后在另一个类Study2中反射这三个变量。

public class Study2 {
   

	public static void main(String[] args) {
   
		try {
   
			Class c = Class.forName("study.czm.Study");// 创建class对象
			Field fi[] = c.getDeclaredFields();// 获取所有成员变量
			for (Field f : fi) {
   
				System.out.print(Modifier.toString(f.getModifiers()) + " ");// 获取成员变量修饰符
				System.out.print(f.getType()
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值