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

我有枚举像:

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

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

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

@ wjans的答案适用于正常的枚举,但不适用于带参数的枚举。 为了扩展他的答案,下面是在Eclipse Juno中为我提供了最明智的格式的设置:

  1. Window > Preferences > Java > Code Style > Formatter
  2. 点击Edit
  3. select“ Line Wrapping选项卡
  4. selectenum声明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. selectConstants treenode
  8. 检查Force split, even if line shorter than maximum line width

这将enum treenode的3个子节点设置为相同的包装策略,以及除了Constants treenode之外的相同的强制拆分策略,所以具有参数的枚举将按照自己的行格式化。 只有超过最大线宽的参数才会自动换行。

例子:

@wjans

 enum Example { CANCELLED, RUNNING, WAITING, FINISHED } enum Example { GREEN( 0, 255, 0), RED( 255, 0, 0) } 

上述解决scheme:

 enum Example { CANCELLED, RUNNING, WAITING, FINISHED } enum Example { GREEN(0, 255, 0), RED(255, 0, 0) } 

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

  • 首选项:Java – 代码样式 – 格式化程序
  • 点击修改
  • select“换行”选项卡
  • select左侧框中的“枚举”声明 – >常量
  • 将换行换行策略设置为“将所有元素换行,换行上的每个元素”
  • 检查“强制拆分…”

这也有点丑陋,但如果你的公司政策阻止你改变格式化程序,你可以把注释放在你不想被包装的行的末尾。

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

这不是很好,但你可以closures一些代码段的Eclipse格式化程序。

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

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

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

将包装策略设置为

  • 将所有元素,每个元素包装在一个新行中

  • 选中“强制拆分”,即使行数小于,,,,