14

我希望 Eclipse 格式化一些调用构建器的代码,如下所示:

final Item item = new Item.Builder()
                          .name("something")
                          .field("a value")
                          .build();

即在“。”上对齐 第一行的字符。我可以通过手动对齐第二行(.name("something"))来手动说服 Eclipse 执行此操作,但是任何自动格式化都会破坏这一点。

我已经使用了在 Eclipse 中可以找到的所有各种格式选项,但它们似乎都没有做我想要的。关于是否有格式选项以这种方式布置代码的任何想法?

4

3 回答 3

5

在点位置精确对齐是不可能的,但是每个方法调用的换行符可以自动完成。我已经创建了这个输出

void format() {
    Test test = new Test()
            .a()        // this call can also be configured to be one line above
            .b()
            .c();
}

通过在格式化程序设置中选择Line Wrapping选项卡,选择Function Calls, Qualified invocations ,将组合框中的Line wrapping 策略切换为Wrap all elements, each element on a new line最后选中复选框Force split, even if line short比最大线宽

您可以通过选择“...除了第一个元素”策略来将第一个方法调用放入第一行。

于 2013-01-29T19:43:34.383 回答
0

创建一个新的格式化程序:

Properties -> Formater -> Configure Workspace Settings -> New

然后在标签Off/On Tags集上Enable Off/On tags

然后像这样围绕你的代码:

/* @formatter:off */
final Item item = new Item.Builder()
                          .name("something")
                          .field("a value")
                          .build();
/* @formatter:on */
于 2013-01-29T15:05:40.160 回答
0

我认为,您可以通过使用“jalopy”来实现这一点。如果您使用 Maven,则有一个 Maven 插件。

如果您想使用 jalopy,那么您感兴趣的设置是您应该将其值设置为<methodCallChain>的元素。alignmenttrue

编辑:maven jalopy 插件。确保以clean阶段为目标并使用目标format

于 2013-02-10T23:17:16.640 回答