java中的sun.security.action.GetPropertyAction类

java中的sun.security.action.GetPropertyAction类,java,string,class,Java,String,Class,今天我学习java中的IO。当我在BufferedWriter类中查看lineSeparatorstring时,我看到了这个语句 lineSeparator = java.security.AccessController.doPrivileged( new sun.security.action.GetPropertyAction("line.separator")); 它初始化行分隔符字符串。但我找不到 sun.security.action.GetPropertyActi

今天我学习java中的IO。当我在
BufferedWriter
类中查看
lineSeparator
string时,我看到了这个语句

lineSeparator = java.security.AccessController.doPrivileged(
        new sun.security.action.GetPropertyAction("line.separator"));
它初始化
行分隔符
字符串。但我找不到

sun.security.action.GetPropertyAction(String args)
在java源代码中初始化。所以我对java如何使用java源代码中没有的这个类感到困惑。那么告诉我:

  • 此类的定义位置以及
    JVM
    如何调用此类
  • 我们可以在自己的程序中调用这个类吗

Java有这个类,您可以从中看到,但是您不应该在这里使用sun(现在代码中的oracle软件包),这就是为什么不应该使用它的原因。以及

java.security.AccessController.doPrivileged(
        new sun.security.action.GetPropertyAction("line.separator"));
使用doPrivileged的代码说“给我 属性,如果当前类(此行代码所在的类)为 允许我读它。”

还有另一个讨论可以更好地理解它


编辑:它在您的JDK程序文件下\Java\jdk1.8.0\u 25\jre\lib\rt.jar您可以学习rt.jar

现在是2020年,这种情况仍然存在。解决此问题的一个快速方法是使用已安装的JDK,而不是来自eclipse安装的JRE。转到Windows>首选项>Java>已安装的JRE,添加已安装的JDK并将其作为默认值使用。

@sachin你现在明白了吗?很好的解释,但我仍然无法理解“GetPropertyAction”类是在哪里定义的,我指的是java src中的哪个包、JAR或其他任何地方folder@SachinKumar更新了我的答案。我可以使用什么类来替换sun.security.action.GetPropertyAction?