java对类私有变量的暴力反射
2013-11-20 20:55
337 查看
假设有一个类,他有一个私有变量:
如果我们直接采用.get的方式,是不可能看到私有变量的。
我们可以这样:
输出:100;
那么这个Filed是什么呢?他 是一个类,表示属性的类。通过pt1得出ReflectPoint的字节码。然后再调用
package com.howlaa.day04; public class ReflectPoint { private int priVar; public ReflectPoint(int priVar){ this.priVar =priVar; } }
如果我们直接采用.get的方式,是不可能看到私有变量的。
我们可以这样:
package com.howlaa.day04; import java.lang.reflect.Field; public class ReflectTest { public static void main(String[] args) throws Exception { ReflectPoint pt1 = new ReflectPoint(3); Field fieldx = pt1.getClass().getDeclaredField("priVar"); fieldx.setAccessible(true); fieldx.set(pt1, 100); System.out.println(fieldx.get(pt1)); } }
输出:100;
那么这个Filed是什么呢?他 是一个类,表示属性的类。通过pt1得出ReflectPoint的字节码。然后再调用
getDeclaredField方法,可以获取x属性。再通过setAccessible使得可以访问这个属性。然后可以通过set方法赋值。注意:getClass获得是ReflectPoint的字节码,与具体实例无关,因此,Field也与具体实例无关。在设置和访问的时候,均需要指定具体哪个实例。
相关文章推荐
- Java对于私有变量的“暴力反射”技术
- java 反射读取私有变量
- Java反射操作私有成员变量 Class can not access a member with modifiers "private"
- Java对于私有变量“反思暴力”技术
- 如何通过Java反射访问类里面的私有方法和变量
- java通过反射技术访问私有变量和方法
- Java反射访问私有变量和私有方法相关搜集
- Java通过反射访问私有成员变量和私有方法
- Java通过反射设置私有变量
- java 使用反射机制来获取私有方法和成员变量
- Java通过反射设置私有变量
- 利用反射读取 私有 变量(很黄很暴力)
- java中通过反射强力获取私有变量的值
- java中反射操作私有成员变量
- 【转】【Java】利用反射技术,实现对类的私有方法、变量访问
- java 中通过反射获取私有变量的值
- Java学习笔记_反射_Class.forName()加载并修改一个类的私有成员变量
- java反射访问私有变量和私有方法
- java 反射机制 读取私有成员变量
- Java反射访问私有变量和私有方法