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

时间:2011-07-13 08:43:35

标签: java eclipse formatter

我的枚举如下:

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

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

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

6 个答案:

答案 0 :(得分:190)

@wjans的答案适用于普通枚举,但不适用于带参数的枚举。为了扩展他的答案,这里是为Eclipse Juno提供最合理格式的设置:

  1. Window> Preferences> Java> Code Style> Formatter
  2. 点击Edit
  3. 选择Line Wrapping标签
  4. 选择enum声明treenode
  5. Line wrapping policy设置为Wrap 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 treenode
  8. 检查Force split, even if line shorter than maximum line width
  9. 这将enum treenode的3个子节点设置为相同的包装策略,并且除Constants treenode之外的相同的强制拆分策略,因此带有参数的枚举将在各自的行中进行格式化。参数只有在超过最大线宽时才会换行。

    <强>示例:

    <强> @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)
    }
    

答案 1 :(得分:49)

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

  • 首选项:Java - 代码样式 - 格式化程序
  • 点击修改
  • 选择“换行”标签
  • 选择“枚举”声明 - &gt;左侧框中的常量
  • 将换行策略设置为'换行所有元素,新行上的每个元素'
  • 检查'强制拆分......'

答案 2 :(得分:10)

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

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

答案 3 :(得分:5)

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

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

该选项位于Windows-&gt;首选项 - &gt; Java-&gt;代码样式 - &gt;格式化程序 - &gt;编辑 - &gt;关/开标签面板

答案 4 :(得分:4)

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

将包装政策设为

  • 包裹所有元素,新行上的每个元素

  • 选中“强制拆分”框,即使行短于,,,,,

答案 5 :(得分:0)

只需添加最新的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