2
我试图学习反思和我在整个问题,为什么没有例外?为什么没有illegalAccessException使用反射
public class FieldExceptionTest {
private boolean b = true;
public static void main(String[] args) throws Exception{
FieldExceptionTest ft = new FieldExceptionTest();
Class<?> c = ft.getClass();
Field f = c.getDeclaredField("b");
// f.setAccessible(true); //if i don't write this line, it also can run.
f.setBoolean(ft, Boolean.FALSE);
System.out.println(ft.b);
}
}
为什么不抛出IllegalAccessException?通过阅读其他书,我知道如果尝试获取或设置私有或其他不可访问的字段的值或设置最终字段的值,则可能会抛出IllegalAccessException。但在这里,它没有,为什么?
我认为这是因为您的主类在同一个类中。你可以把它放在不同的班级,然后尝试吗? – Avi