Ответ 1
Он просто получает системное свойство. Для получения свойств системы требуются разрешения, которые код вызова может не иметь. doPrivileged
утверждает привилегии вызывающего класса независимо от того, как он был вызван. Ясно, что doPrivileged
- это то, о чем вам нужно быть осторожным.
Процитированный код эквивалентен:
String lineSeparator = java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<String>() {
public String run() {
return System.getProperty("line.separator");
}
}
);
(Вам не нравится краткий синтаксис Java?)
Без утверждений привилегий это можно переписать как:
String lineSeparator = System.getProperty("line.separator");