如何在 Java 的 Eclipse 中对字符串和其他项目使用不同的换行

How to use different line wrapping for strings and other items in Eclipse for Java

我想在 Java.

的 Eclipse 中,对字符串在运算符后换行,对其他项目(数字、自定义对象等)在运算符前换行

在添加不同符号的数字时,运算符对我来说比数字更重要。最好让操作员在前面更好地阅读语句:

A.

int foo =  baaa
           + veryveryveryloooooongexpression
           - shortexpression
           + anotherexpression;

对比

B.

int foo =  baaa +
           veryveryveryloooooongexpression -
           shortexpression +
           anotherexpression;

另一方面,在添加字符串时,运算符只是用来续行,字符串项对我来说更重要。一行末尾的运算符暗示下一行会发生某些事情。因此我想在字符串运算符之后使用换行:

B.

String message = "Would you like to use line wrapping at " + position +
                 " ? If you want to keep that behavior press Enter."

对比

A.

 String message = "Would you like to use line wrapping at " + position
                  +" ? If you want to keep that behavior press Enter."

相关文章:

(在某些情况下,改进代码并使用单行、使用 String.format(...) 或使用字符串生成器当然可能更好。这不是这里的问题。 )

如何在 Eclipse 中为两种不同的情况(第一项是字符串与第一项是其他内容)应用不同的换行设置 A.(运算符之前)和 B.(运算符之后)?是否有一些我没有看到的默认设置?有没有可以这样做的 Eclipse 插件?

(再评论几条:


在函数调用中包装 String 参数时,我没有让运算符 (B.) 之后的包装正常工作,即使我想在这两种情况下都应用它。我为二进制表达式启用了选项 "Wrap before operator" 并禁用了常规选项 "Never join already wrapped lines"。然而,下例中的 + 运算符出现在下一行。我在 https://bugs.eclipse.org/bugs/show_bug.cgi?id=466919 下提交了错误报告。

    statusBuilder.append("This set is not yet present in the database!\n"
                    + "You can save it by hitting the 'Save' button below.\n");

)

使用 on/off 标签为特定代码块禁用 Eclipse 的代码格式化程序。这迫使您自己格式化代码,但它至少让您可以完全控制代码的外观。

//@formatter:off
String message = "Would you like to use line wrapping at " + position +
                 " ? If you want to keep that behavior press Enter."
//@formatter:on

on/off 功能必须 "ON"。在 Eclipse 首选项中:Java > 代码样式 > 格式化程序。单击 "Edit" 按钮,"Off/On Tags",勾选 "Enable Off/On tags"

我刚找到另一个选项:在每行末尾使用“+//”:

String message = "Would you like to use line wrapping at " + position + //
             " ? If you want to keep that behavior press Enter."

此问题已在 4.11 M1 版中修复。另见

https://bugs.eclipse.org/bugs/show_bug.cgi?id=543079