110

我有这样的枚举:

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

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

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

6 回答 6

204

@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 of 3。
  6. 取消选中Force split, even if line shorter than maximum line width (...),因此它现在在括号中显示 3 of 3。
  7. 选择Constants树节点
  8. 查看Force split, even if line shorter than maximum line width

这会将枚举树节点的 3 个子节点设置为相同的包装策略,以及相同的强制拆分策略(树节点除外)Constants,因此您的带参数的枚举将在各自的行上格式化。只有当参数超过最大线宽时,参数才会换行。

例子:

@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)
}
于 2012-10-03T09:27:37.217 回答
51

您可以在格式化程序首选项中指定:

  • 首选项:Java -- 代码风格 -- 格式化程序
  • 单击编辑
  • 选择“换行”选项卡
  • 在左侧框中选择“枚举”声明 -> 常量
  • 将换行策略设置为“将所有元素换行,每个元素都换行”
  • 检查“强制拆分...”
于 2011-07-13T08:47:44.960 回答
11

它也有点难看,但是如果您的公司政策阻止您更改格式化程序,您可以将注释放在您不想被包装的行的末尾。

public static enum Command 
{
    login,//
    register,//
    logout,//
    newMessage//
};
于 2011-07-13T08:57:12.677 回答
5

这不是很好,但您可以为某些代码部分关闭 Eclipse 格式化程序......

// @formatter:off
public static enum Command {
    login,
    register,
    logout,
    newMessage
};
// @formatter:on

该选项位于 Windows->Preferences->Java->Code Style->Formatter->Edit->Off/On Tags 面板中

于 2011-07-13T08:53:07.210 回答
4

您需要在“常量”的枚举声明下设置换行策略。

将包装策略设置为

  • 包装所有元素,每个元素换行

  • 选中“强制拆分,即使行短于,,,,,
于 2011-07-13T08:53:27.770 回答
2

只需添加最新的 Eclipse 2018.9

  1. Window > Preferences > Java > Code Style > Formatter-Edit
  2. 展开Line Wrapping树节点。
  3. 扩张Wrapping settings
  4. 扩张'enum' declaration
  5. 编辑ConstantsConstant arguments.

常量必须是Wrap all elements, every element on a new line. 常量参数需要是Wrap where necessary.

于 2018-11-30T10:29:34.137 回答