为什么 System.lineSeparator() 被弃用?

Jin*_*n.J 3 java intellij-idea

我的 intelliJ IDE 的屏幕截图,因为我无法直接发布图片 (顺便说一下,我使用的是 jdk 10)出于某种原因,我需要根据输入输出一个字符串,并且字符串中可能有新行。为了使程序在不同平台上运行,我使用一个变量来存储 System.lineSeparator() 并在需要时插入它。但后来我意识到 intelliJ 显示它已被弃用。所以我的问题是,为什么这个函数被弃用了?使用行分隔符是一种不好的做法吗?这样做的更好方法是什么?

final String NEW_LINE = System.lineSeparator();
String output = "Line one" + NEW_LINE + "Line two";
WriteToFile(output);
Run Code Online (Sandbox Code Playgroud)

更新:图片显示了我的 IntelliJ IDE 中的警告。该问题可能是由我的配置引起的。根据下面的答案(谢谢大家的回答),也许下次我应该在问“为什么”之前先问“是吗”。

Yas*_*che 6

为什么这个函数被弃用了?

这是由 IntelliJ 中的插件、附加组件或配置设置实现的选择(正如一些评论指出的,他们的 IntelliJ 并没有将其视为已弃用)。据我所知,弃用这一点的唯一选择是它可能会带来兼容性错误。然而,从Java System 类文档来看:

行分隔符

公共静态字符串行分隔符()

返回与系统相关的行分隔符字符串。它始终返回相同的值 - 系统属性 line.separator 的初始值。

在 UNIX 系统上,它返回“\n”;在 Microsoft Windows 系统上,它返回“\r\n”。

System.lineSeparator()就其实现的版本 ( Java 7 ) 和直到最后一个可用版本 ( Java 10 ) 而言,没有任何迹象表明 已弃用。如果这真的让你很烦恼,你可能想直接向社区询问


使用行分隔符是一种不好的做法吗?

完全不(据我所知,我可能是错的),特别是因为您使用的行分隔符与您运行代码的任何系统兼容(理论上)。


这样做的更好方法是什么?

对于您对这段代码的设计选择,我没有任何更好的建议。关于这一点,米哈尔·朗斯基(Michal Lonski)似乎有一个。