为什么允许通过反射访问 Java 私有字段?
2022-09-01 00:21:14
考虑这个例子:
import java.lang.reflect.Field;
public class Test {
public static void main(String[] args) {
C c = new C();
try {
Field f = C.class.getDeclaredField("a");
f.setAccessible(true);
Integer i = (Integer)f.get(c);
System.out.println(i);
} catch (Exception e) {}
}
}
class C {
private Integer a =6;
}
允许您通过反射访问类的私有字段似乎是不合逻辑的。为什么这样的功能可用?允许这种访问不是“危险”吗?