我有一种情况,用户的代码在反射访问的字段上抛出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