我有一種情況,用戶的代碼在反射訪問的字段上拋出IllegalAccessException
。在訪問該字段之前,調用setAccessible(true)
。所以,在我看來,這種方法在默默地失敗。在什麼情況下,Java的field.setAccessible(true)會失敗?
在什麼情況下會發生這種情況?這可能與安全經理有關嗎?
這是導致異常的代碼片段:
private static Field levelField;
public int getLevel() {
try {
if (levelField == null) {
levelField = MessageInfo.class.getDeclaredField("level");
levelField.setAccessible(true);
}
return levelField.getInt(this); // <-- IllegalAccessException thrown here
} catch (Exception e) {
handleException(e);
}
return ICompilationUnit.NO_AST;
}
打印出異常消息和stacktrace會有幫助。 – NawaMan 2009-10-11 04:03:35