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
提交
取消