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


105

我尚未成功弄清楚如何在中包装每个方法调用Eclipse。例如,我有这个:

someObject.A().B().C();

但是我真的想要这样:

someObject.A()
          .B()
          .C();

“行包装”部分下的内容Eclipse似乎都没有给我这个结果。

Answers:


186

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

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

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

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

函数调用→合格的调用

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

包装所有元素,必要时除第一个元素外

检查

即使线短于最大线宽,也会强制拆分

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

列缩进

它应该为您提供所需的确切行为。


奖金:Android Studio / IntelliJ想法:

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

选择

总是包装

并检查

多行时对齐


2
谢谢。这不适用于return new SomeClass().A().B().C();单独一行上的每个方法调用。
哈维

1
@ChristianGarcía+1是个不错的答案。我的一项观察(Eclipse霓虹灯):设置时Indent on column,有时会增加额外的空间。例如session.createQuery变为session .createQuery等。恢复为默认选项对我来说是个问题。
Sayan Pal

这将在第一次调用后插入一个选项卡。为了避免这种情况,我必须选中“缩进”下的“使用空格使换行缩进”。
丹尼尔·尼赞

12

窗口→首选项→Java→代码样式→格式化程序→编辑→换行→永不合并已换行的行


3
对不起,我没有解释:它不会格式化。如果您手动进行操作,它将不会弄乱它。
Op De Cirkel'6

我现在明白了 Eclipse不能实际格式化链接的方法,但是它将保留我输入的格式。谢谢。
约翰

没有特定于链接呼叫的内容。如果强制执行函数调用包装,则它将包装在所有位置
Op De Cirkel,

@Johann这是不正确的,Eclipse可以格式化链接的方法调用。
Deepak Azad

@OpDeCirkel您应该在答案本身中添加评论。让人们更容易注意到它:此评论I am sorry i did not explain: It won't format it. It will simply not mess it up, if you do it manually. –
Sandeep Shukla

7

窗口>首选项> Java>代码样式>格式化程序>编辑>换行>函数调用,将“换行策略”设置为“换行,换行所有元素”。


这将使每个函数调用都换行,即使它们未链接在一起,并且如果使用Ctrl + Shift + f格式化文件,也会使所有内容搞乱\
Op De Cirkel

1
其他策略也可用,例如“包装所有元素,必要时除第一个元素外”。其中之一应该为您工作:)
Deepak Azad

7

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

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

该属性是:

org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80



-1

在Java和javascript中自定义您的Eclipse格式化程序。增加适合您屏幕的最大行数。Windows>首选项

编辑

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.