Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 运行代码格式化程序时,是否可以阻止Intellij拆分字符串文字?_Java_Intellij Idea - Fatal编程技术网

Java 运行代码格式化程序时,是否可以阻止Intellij拆分字符串文字?

Java 运行代码格式化程序时,是否可以阻止Intellij拆分字符串文字?,java,intellij-idea,Java,Intellij Idea,大致上就是标题所说的。当I cmd+f时,它会根据项目的设置格式化代码。其中一个设置是右边距。问题是它还将分割字符串文字,以避免超出边距。因此: stringBldr.append("some text that's more than 80 characters"); 变成这样: stringBldr.append("some text that's more " + "than 80 characters"); 这完全违背了最初使用StringBuilder的目的。在

大致上就是标题所说的。当I cmd+f时,它会根据项目的设置格式化代码。其中一个设置是右边距。问题是它还将分割字符串文字,以避免超出边距。因此:

stringBldr.append("some text that's more than 80 characters");
变成这样:

stringBldr.append("some text that's more " +
          "than 80 characters");

这完全违背了最初使用
StringBuilder
的目的。在Eclipse中,我可以告诉它在格式化时忽略字符串文本。在IntelliJ中有没有一种方法可以在不手动禁用该部分的代码格式化程序的情况下执行此操作(例如
@formatter:off
)?

尝试使用

Editor | Code Style | Java | Wrapping and Braces | Annotation with parameters - Wrap always + align when multiline

“长时换行”或“长时切掉”。

禁用:

Editor > Code Style > Java > Wrapping and Braces > Ensure right margin is not exceeded : false

“这完全违背了使用StringBuilder的初衷”不,编译器只创建了一个字符串文字。@AndyTurner是吗?我的印象是它不会优化这一点。只有在串联中有一个变量的情况下,这才是问题吗?嗯,这太令人印象深刻了。谢谢你的启发!这也解释了JetBrains为什么没有使用此功能。我怀疑他们知道的比我多(他们通常都知道),但我始终搞不清楚这件事到底是怎么回事!嗯,我还是不满意。即使编译器实际连接了字符串,格式化程序也会弄乱代码。它在分裂之前没有连接字符串。所以,我的结尾是这样的:“foo”+“+”bar“在拆分之前加入将是一个很好的改进。你有没有找到解决方案?希望强制执行120个字符的宽度,但不要以拆分超过限制的5个字符的字符串为代价。
Editor > Code Style > Java > Wrapping and Braces > Ensure right margin is not exceeded : false