Java中如何通过反射访问私有变量呢?
下文笔者将讲述反射中访问私有变量的方法分享,如下所示
报错代码
今天使用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); }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。