The screenshot of my intelliJ IDE as I could not post a picture directly (顺便说一句,我使用的是jdk 10) 出于某种原因,我需要根据输入输出一个String,并且String中可能有新的行。为了使程序在不同的平台上工作,我使用一个变量来存储System.lineSeparator()并在需要时插入它。但后来我意识到,intelliJ表明它已被弃用。所以我的问题是,为什么这个功能被弃用了?使用行分隔符是不好的做法?这样做的更好方法是什么?
final String NEW_LINE = System.lineSeparator();
String output = "Line one" + NEW_LINE + "Line two";
WriteToFile(output);
更新:图片显示了我的intelliJ IDE中的警告。问题可能是由我的配置引起的。根据下面的答案(谢谢大家回答顺便说一句),也许我应该问"是不是"之前"为什么"下次。
答案 0 :(得分:2)
为什么不推荐使用此功能?
这是由IntelliJ中的插件,附加组件或配置设置实现的选择(正如一些评论指出的那样,他们的IntelliJ不会将其视为已弃用)。据我所知,弃用这个的唯一选择是它可能带来兼容性错误。但是,来自Java System class documentation:
<强> lineSeparator 强>
public static String lineSeparator()
返回依赖于系统的行分隔符字符串。它总是返回相同的值 - 系统属性line.separator的初始值。
在UNIX系统上,它返回“\ n”;在Microsoft Windows系统上,它返回“\ r \ n”。
对于System.lineSeparator()
的弃用,没有任何关于其实施版本(Java 7)以及直到最后一个版本(Java 10)的弃用的指示。如果它真的让你大吃一惊,你可能想要ask the community directly。
使用行分隔符是不好的做法?
完全没有(就我的知识而言,我可能错了),特别是因为你使用的行分隔符与你运行代码的任何系统兼容(理论上)。
这样做的更好方法是什么?
关于您对此代码的设计选择,我没有任何更好的建议。关于这一点,似乎Michal Lonski有一个。
答案 1 :(得分:0)
您可以使用decimal amount = myList.Sum(x => x.Odds);
和String.format
:
%n
String output = String.format("Line one%nLine two");
是与平台无关的换行符。
答案 2 :(得分:0)
可能System.lineSeparator()
被配置为错误地用@Deprecated
注释。您可以将文本光标置于方法调用上,然后按 Alt + Enter 并调用Deannotate @java.lang.Deprecated
以删除注释。
答案 3 :(得分:0)
如果您的Java版本不允许System.getProperty
,则可以将line.separator
与System.lineSeparator()
一起使用。
final String LINE_SEPARATOR = System.getProperty("line.separator");