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