Cách ngăn bộ định dạng Eclipse đặt tất cả các enum trên một dòng


106

Tôi có enums như:

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

Khi định dạng tệp, đầu ra sẽ trở thành:

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

1
Có biến nào trong trình định dạng bên ngoài (org.eclipse.jdt.core.formatter ......) để thực thi mỗi biến enum trong một dòng riêng biệt không?
Paramesh Korrakuti

Câu trả lời:


198

Câu trả lời của @wjans phù hợp với enums bình thường, nhưng không phù hợp với enums có đối số. Để mở rộng câu trả lời của anh ấy một chút, đây là cài đặt cung cấp định dạng hợp lý nhất cho tôi trong Eclipse Juno:

  1. Window> Preferences> Java> Code Style>Formatter
  2. Nhấp chuột Edit
  3. Chọn Line Wrappingtab
  4. Chọn enumtreenode khai báo
  5. Đặt Line wrapping policythành Wrap all elements, every element on a new line (...)để bây giờ nó nói 3 trong số 3 trong ngoặc đơn.
  6. Bỏ chọn Force split, even if line shorter than maximum line width (...)để bây giờ nó nói 3 trong số 3 trong dấu ngoặc đơn.
  7. Chọn Constantstreenode
  8. Kiểm tra Force split, even if line shorter than maximum line width

Điều này đặt 3 subnode cho enum treenode thành cùng một chính sách gói và cùng một chính sách phân chia lực lượng ngoại trừ Constantstreenode, do đó, các enum với các đối số của bạn sẽ được định dạng trên mỗi dòng riêng của chúng. Các đối số sẽ chỉ bao bọc nếu chúng vượt quá độ rộng dòng tối đa.

Ví dụ:

@wjans

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

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

Giải pháp được mô tả ở trên:

enum Example {
    CANCELLED,
    RUNNING,
    WAITING,
    FINISHED
}

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

1
Đối với tôi vẫn có vẻ sai trong trình xem trước nhật thực nhưng khi tôi thử nó trên nguồn thực tế, nó hoạt động như một sự quyến rũ. Cảm ơn.
Ben Thurley

50

Bạn có thể chỉ định điều này trong tùy chọn định dạng của mình:

  • Tùy chọn: Java - Kiểu mã - Định dạng
  • Nhấp vào Chỉnh sửa
  • Chọn tab 'Line Wrapping'
  • Chọn khai báo 'enum' -> Hằng số trong hộp bên trái
  • Đặt chính sách gói dòng thành 'Gói tất cả các phần tử, mọi phần tử trên một dòng mới'
  • Chọn 'Buộc tách ...'

Tôi đã có vấn đề này trong nhiều tháng. Điều tôi không thử là "lực lượng phân chia". Không chắc tại sao nó lại cần thiết vì bạn nghĩ rằng "bọc tất cả các phần tử" sẽ thực sự bọc tất cả các phần tử! Cảm ơn vì giải pháp.
LegendLength

11

Nó cũng hơi xấu, nhưng nếu chính sách công ty của bạn ngăn cản bạn thay đổi định dạng, bạn có thể chỉ cần đặt nhận xét ở cuối dòng mà bạn không muốn bị cuốn vào.

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

5

Nó không đẹp nhưng bạn có thể tắt trình định dạng Eclipse cho một số phần mã ...

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

tùy chọn nằm trong bảng điều khiển Windows-> Preferences-> Java-> Code Style-> Formatter-> Edit-> Off / On


1
Điều này hoạt động ... loại. Trình biên dịch bây giờ nghĩ rằng nó là một lỗi. Đưa chúng trong ý kiến khắc phục vấn đề này như // @formatter: off
Bob Kuhar

4

Bạn cần đặt chính sách gói dòng trong khai báo enum cho "Hằng số".

Đặt chính sách gói thành

  • Gói tất cả các yếu tố, mọi yếu tố trên một dòng mới

  • Chọn hộp có nội dung "Buộc tách, ngay cả khi dòng ngắn hơn ,,,,,

0

Chỉ cần thêm Eclipse mới nhất 2018.9

  1. Window > Preferences > Java > Code Style > Formatter - Edit
  2. Mở rộng Line Wrappingnút cây.
  3. Mở rộng Wrapping settings
  4. Mở rộng 'enum' declaration
  5. Chỉnh sửa ConstantsConstant arguments.

Hằng số cần phải được Wrap all elements, every element on a new line. Đối số liên tục cần phải được Wrap where necessary.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.