一尘不染

如何阻止Eclipse格式化程序将所有枚举放在一行上

java

我有像这样的枚举:

public static enum Command
{
login,
register,
logout,
newMessage
}

格式化文件时,输出变为:

public static enum Command 
{
login, register, logout, newMessage
}

阅读 223

收藏
2020-12-03

共1个答案

一尘不染

@wjans的答案对于普通枚举效果很好,但不适用于带有参数的枚举。为了进一步扩展他的答案,以下是在Eclipse Juno中为我提供最明智的格式的设置:

  1. Window> Preferences> Java> Code Style>Formatter
  2. 请点击 Edit
  3. 选择Line Wrapping标签
  4. 选择enum声明树节点
  5. 设置Line wrapping policyWrap all elements, every element on a new line (...),现在它在括号中表示3之3。
  6. 取消选中,Force split, even if line shorter than maximum line width (...)这样它现在在括号中显示3之3。
  7. 选择Constants树节点
  8. 检查一下 Force split, even if line shorter than maximum line width

这会将枚举treenode的3个子节点设置为相同的包装策略和相同的强制拆分策略(除了Constantstreenode之外),因此带有参数的枚举将在各自的行上设置格式。仅当参数超过最大行宽时,它们才会换行。

例子:

@wjans

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

enum Example {
    GREEN(
        0,
        255,
        0),
    RED(
        255,
        0,
        0)
}

上述解决方案:

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

enum Example {
    GREEN(0, 255, 0),
    RED(255, 0, 0)
}
2020-12-03