在java代码中,我们经常使用private来控制类中成员变量的访问权限,在类的外边我们一般使用get方法获取私有成员变量的值,但是如果类中没有get方法,但我们又想获取该类私有成员变量的值,该怎么办?
- 可以使用反射获取类中成员变量
- 再使用 accessible() 来临时改变访问权限,就可以获取私有成员变量的值了
测试类
package com.ljw.accessible;
public class AccessibleDemo {
private int id;
private String name;
public void setId(int id) {
this.id = id;
}
public void setName(String name) {
this.name = name;
}
}
测试
package com.ljw.accessible;
import java.lang.reflect.Field;
public class Test {
@org.junit.Test
public void accessibleTest() throws ClassNotFoundException, IllegalAccessException {
Class clazz = Class.forName("com.ljw.accessible.AccessibleDemo");
AccessibleDemo ad = new AccessibleDemo();
ad.setId(2);
ad.setName("AI");
for(Field f : clazz.getDeclaredFields()){
System.out.println("---------------------------");
System.out.println(f.isAccessible()); // 查看该字段的访问权限,不能访问返回false
f.setAccessible(true); // 将该字段的访问权限改为true
System.out.println(f.isAccessible());
System.out.println(f.getName()+":"+f.get(ad));));
}
}
}
结果:
---------------------------
false
true
id:2
---------------------------
false
true
name:AI
点击查看更多内容
1人点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦