在Eclipse for Java中的单独行上包装链式方法调用

Joh*_*ann 97 eclipse line

我没有成功地弄清楚如何包装每个方法调用Eclipse.例如,我有这个:

someObject.A().B().C();
Run Code Online (Sandbox Code Playgroud)

但我真的想要这个:

someObject.A()
          .B()
          .C();
Run Code Online (Sandbox Code Playgroud)

"Line Wrapping"部分下的任何内容Eclipse似乎都没有给我这个结果.

Chr*_*cía 177

补充Deepak Azad的答案,您真正需要的是以下内容:

Windows:窗口→首选项→Java→代码样式
→格式化程序→编辑→换行(选项卡)

Mac OS:ADT→首选项→Java→代码样式
→格式化程序→编辑→换行(选项卡)

然后,在左侧的列表中,选择:

函数调用→合格调用

现在在此列表下方,将换行策略设置为:

如果没有必要,包裹所有元素,第一个元素除外

检查:

强制分割,即使线条比最大线宽短

最后,将缩进策略设置为(感谢@Turbo):

缩进列

它应该为您提供您要求的确切行为.


奖励:Android Studio/IntelliJ创意:

Mac OS:Android Studio→首选项(Cmd +,)→编辑器→代码样式→Java→ 环绕和括号选项卡→链式方法调用

选择

永远包裹

并检查

多线时对齐

  • 这太棒了!谢谢.我还想添加如果您希望链接的调用直接跟在其他调用之下(而不是标准缩进),那么还要将_indentation policy_(下拉菜单)更改为_indent on column_. (7认同)
  • 谢谢。这对于`return new SomeClass()。A()。B()。C();'无效,因为每个方法调用都位于单独的行上。 (2认同)
  • @ChristianGarcía +1 的好答案。我的一个观察(Eclipse neon):当我设置“列上缩进”时,它有时会增加额外的空间;例如`session.createQuery` 变成`session .createQuery` 等等。不过,恢复到默认选项为我解决了问题。 (2认同)

Op *_*kel 10

Window-> Preferences-> Java-> Code Style-> Formater-> Edit-> Line wrapping->从不加入已包裹的行

  • @OpDeCirkel您应该在答案本身中添加您的评论。让人们更容易注意到它:此评论`很抱歉我没有解释:它不会格式化它。如果您手动执行此操作,它根本不会弄乱它。–` (3认同)
  • 对不起,我没有解释:它不会格式化它.如果你手动完成,它就不会搞砸了. (2认同)

Dee*_*zad 7

窗口>首选项> Java>代码样式>格式>编辑>换行>函数调用,将'换行策略'设置为'换行所有元素,新行上的每个元素'.

  • 其他策略也可用,例如“包装所有元素,如果不需要,除了第一个元素”。其中之一应该适合你:) (2认同)

And*_*ert 6

对于已将Eclipse代码格式设置签入源代码管理(对于整个团队而言一致的代码格式)的用户,将.settings签入该文件夹。

.settings/org.eclipse.jdt.core.prefs文件中将提供这种格式化行为的属性。

该属性是:

org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80
Run Code Online (Sandbox Code Playgroud)