如何让Eclipse自动在IF语句中添加大括号?

53
在Java中,以下代码是完全合法的:
if (x == null)
    Y();
else
    Z();

个人而言,我一点也不喜欢。我希望所有的 IF 语句都有大括号:

if (x == null) {
    Y();
} else {
    Z();
}

Eclipse的格式化程序很棒,可以为我的代码添加美观的样式,而且还能以许多其他方式对其进行美化。

是否有一种方法使其在IF语句中添加花括号呢?


1
顺便提一下,使用Allman风格大括号的人似乎更喜欢在非常可读的控制语句后面不加括号来表示简单的单行块。对于通常情况,这样做需要更少的仪式感,但对于更复杂的情况则需要多用一行。参考链接:http://en.wikipedia.org/wiki/Indent_style - Peter DeWeese
这基本上是与https://dev59.com/13M_5IYBdhLWcg3ww2Kb相同的问题。 - David Tonhofer
4
不是这样的 - 这个问题是在询问如何强制单行if/else子句使用大括号,而https://dev59.com/13M_5IYBdhLWcg3ww2Kb是在询问如何强制现有大括号的特定布局。 - SamStephens
5个回答

85

在“首选项”下:Java > 编辑器 > 保存操作

1) 勾选“附加操作”

2) 点击“配置…”

3) 转到“代码风格”选项卡

4) 勾选“在if/while/for/do语句中使用块”,并根据您的偏好进行配置


4
你使用的是哪个版本的Eclipse?它似乎对我无效。 - Pacerier
1
我不知道为什么,但我的大脑一直强制我在Java->代码样式>格式化程序中寻找此设置。这是完全不同的部分。谢谢 :) - Manish Bansal
这个解决方案已经过时了,而Eclipse也不再是10年前的样子了。 ;) - Gabriel Petrovay
在2022年,使用4.22版本(2021-12),在“首选项”->“Java”->“编辑器”->“保存操作”中,启用“附加操作”,然后单击“配置”。选择“代码风格”选项卡(第二个)。在顶部右侧是“在if/while/for/do语句中使用块”; 选择它并选择下面的“始终”按钮。裸if之后的注释将消失。 - Alan

22

可以。

Eclipse 菜单: Source -> Clean Up...

Configure... -> Code Style -> 使用块状语句(if/while/for/do)。


2
我更喜欢这个选项,而不是@gk5885的...抱歉 :) 一个警告,Eclipse将删除if后面的注释。 - ArturoTena
这个选项似乎已经从Eclipse Oxygen(2017)中消失了。 - simon
1
在格式化程序xml文件中,用于查找该属性名称是什么? - MAK Ripon
我真的需要知道这个“偏好设置”是否可以插入到Eclipse格式化器XML文件中,因为我使用NetBeans与External Formatter,而且我需要遵守大部分同事们都是Eclipse迷的规范...除了...这个选项让我的强迫症无法容忍...缺少大括号! - Darrin
我真的很想知道这个“偏好设置”能否插入到Eclipse格式化器的XML文件中,因为我使用NetBeans和一个外部格式化器,并且我需要遵守大多数同事们都是Eclipse迷的规范...除了...这个选项我无法忍受...缺少大括号! - undefined

10

在Eclipse Oxygen (2017+)中,该选项现在位于:

Window -> Preferences -> Java -> Code Style -> Clean Up -> Edit -> 第二个选项卡“Code Style”

更改后,请选择您代码的相应部分并运行“Clean Up”选项。


0
这是我所做的事情:Eclipse - 首选项 - Java - 代码风格 - 格式化程序 - 编辑 - 大括号,在每个框中选择下一行,然后另存为不同的名称(您可以自己选择)。

这不会给没有括号的现有代码添加括号。 - Vivek Chavda

-7

我通常通过复制内置的Eclipse格式化程序来创建代码格式化程序,如下:

Windows > Preferences > Java > Code Style > Formatter 

选择您刚创建的配置文件。然后单击“编辑”并转到“大括号”选项卡。
根据您的喜好更改大括号的位置(这是一种所见即所得的编辑器,使其变得容易)。
当我需要格式化时,我只需选择所有文本并使用Ctrl+Shift+F,这对我很有效。

2
这不会给没有括号的现有代码添加括号。 - yellavon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接