java的反射机制是可以反射出private字段的,但是网上说reflectasm速度比较快,但是我试过了,reflectasm 无法反射私有的字段。Java代码 FieldAccess access = FieldAccess.get(Person.class); String[] ss = access.getFieldNames(); System.out.println(ss.length); for(String s : ss){ System.out.println(s); }
2 回答
心有法竹
TA贡献1866条经验 获得超5个赞
Java 的反射是可以访问私有变量的。
package test;
import java.lang.reflect.Field;
public class PrivateField {
public static void main(String[] args) throws Exception {
Dummy obj = new Dummy();
Field f = obj.getClass().getDeclaredField("s");
f.setAccessible(true);
String s = (String) f.get(obj);
System.out.println(s);
}
}
class Dummy {
private String s = "Hello";
}
牧羊人nacy
TA贡献1862条经验 获得超7个赞
你说的这个reflectasm没使用过,是不是和反射一样,需要调用getDeclareFileds这样的方法来获取,当通过getFileds在反射里也是获取不到的。
添加回答
举报
0/150
提交
取消