gpt4 book ai didi

java - AccessController.doPrivileged

转载 作者:IT老高 更新时间:2023-10-28 20:52:07 24 4
gpt4 key购买 nike

我试图弄清楚一些遗留代码在做什么。这条线到底在做什么,为什么我需要这种方式?

String lineSeparator = (String) java.security.AccessController.doPrivileged(
new sun.security.action.GetPropertyAction("line.separator"));

我在 Weblogic 8 上运行的 web/ejb 应用程序的记录器实现中发现了它。据我所知,没有启用任何特殊的安全策略。 (我不喜欢从 sun.* 包导入,所以我想摆脱这一行 ;-)

最佳答案

它只是获取系统属性。检索系统属性需要调用代码可能没有的权限。 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");

关于java - AccessController.doPrivileged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/852453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com