Java中如何通过反射访问私有变量呢?

乔欣 Java经验 发布时间:2022-12-08 21:35:38 阅读数:20938 1
下文笔者将讲述反射中访问私有变量的方法分享,如下所示
今天使用java代码访问私有变量时
 出现以下异常报错:
    IllegalAccessException
 这种报错就是变量设置为private导致的
 我们必须对字段进行相应设置
 才能使用反射访问其变量
例:
报错代码
public class TestClass {
    private int fieldTest;

    public TestClass() {
        fieldTest = 888;
    }

    public static Object getInstanceField(Object instance, String fieldName) throws Throwable {
        Field field = instance.getClass().getDeclaredField(fieldName);
        return field.get(instance);
    }
}


//当我们使用getInstanceField()访问字段时
//将会出现相应的错误信息
TestClass t = new TestClass();
Object val = TestClass.getInstanceField(t, "fieldTest");
以上代码将会报IllegalAccessException
此时我们只需进行以下调整,即可避免相应的异常发生
public static Object getInstanceField(Object instance, String fieldName) throws Throwable {
        Field field = instance.getClass().getDeclaredField(fieldName);
        //使用反射可访问private修饰的字段
		field.setAccessible(true);
		return field.get(instance);
    }
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202212/16705065935078.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者