Pet*_*ler 20 java security api java-ee
我想弄清楚一些遗留代码在做什么.这条线到底在做什么,为什么我会这样需要呢?
String lineSeparator = (String) java.security.AccessController.doPrivileged(
new sun.security.action.GetPropertyAction("line.separator"));
Run Code Online (Sandbox Code Playgroud)
我在Weblogic 8上运行的web/ejb应用程序的logger实现中找到了它.据我所知,没有启用特殊的安全策略.(我不喜欢从sun.*包中导入,所以我想摆脱这条线;-)
Tom*_*ine 31
它只是获得一个系统属性.检索系统属性需要调用代码可能没有的权限.该doPrivileged断言它是如何被称为调用类不论特权.显然,doPrivileged你需要小心谨慎.
引用的代码相当于:
String lineSeparator = java.security.AccessController.doPrivileged(
new java.security.PrivilegedAction<String>() {
public String run() {
return System.getProperty("line.separator");
}
}
);
Run Code Online (Sandbox Code Playgroud)
(难道你不喜欢Java语法的简洁性吗?)
如果没有声明权限,可以将其重写为:
String lineSeparator = System.getProperty("line.separator");
Run Code Online (Sandbox Code Playgroud)