Gói lệnh gọi phương thức chuỗi trên một dòng riêng biệt trong Eclipse cho Java


105

Tôi đã không thành công trong việc tìm ra cách kết hợp từng lệnh gọi phương thức vào Eclipse. Ví dụ, tôi có cái này:

someObject.A().B().C();

Nhưng tôi thực sự muốn điều này:

someObject.A()
          .B()
          .C();

Không có gì trong phần "Line Wrapping" Eclipsedường như cho tôi kết quả này.

Câu trả lời:


186

Bổ sung cho câu trả lời của Deepak Azad, chính xác những gì bạn cần là:

Windows : Window → Preferences → Java → Code Style
→ Formatter → Edit → Line wrap (tab)

Mac OS : ADT → Preferences → Java → Code Style
→ Formatter → Edit → Line wrap (tab)

Sau đó, trong danh sách ở bên trái, hãy chọn:

Lệnh gọi hàm → Lệnh gọi đủ điều kiện

Bây giờ bên dưới danh sách này, đặt chính sách gói dòng thành:

Gói tất cả các phần tử, ngoại trừ phần tử đầu tiên nếu không cần thiết

Kiểm tra :

Buộc tách, ngay cả khi dòng ngắn hơn độ rộng dòng tối đa

Cuối cùng, hãy đặt chính sách Thụt lề thành (cảm ơn @Turbo ):

Thụt lề trên cột

Nó sẽ cung cấp cho bạn hành vi chính xác mà bạn yêu cầu.


THƯỞNG: Android Studio / Ý tưởng IntelliJ:

Mac OS : Android Studio → Preferences ( Cmd +,) → Editor → Code Style → Java → tab Wrapping And Braces → Các lệnh gọi phương thức chuỗi

lựa chọn

Quấn luôn

và kiểm tra

Căn chỉnh khi nhiều dòng


2
Cảm ơn. Điều này không hoạt động return new SomeClass().A().B().C();với mỗi cuộc gọi phương thức trên một dòng riêng biệt.
Harvey

1
@ ChristianGarcía +1 cho câu trả lời tuyệt vời. Một quan sát của tôi (đèn neon Eclipse): Khi tôi đặt Indent on column, nó đôi khi thêm không gian; ví dụ session.createQuerytrở thành session .createQueryvà như vậy. Mặc dù vậy, việc hoàn nguyên về tùy chọn mặc định đã giải quyết vấn đề cho tôi.
Sayan Pal

Điều này sẽ chèn một tab sau lời gọi đầu tiên. Để tránh điều đó, tôi phải chọn "Sử dụng khoảng trắng để thụt lề các dòng được bọc" trong Thụt lề.
Daniel Nitzan

12

Cửa sổ → Tùy chọn → Java → Kiểu mã → Trình định dạng → Chỉnh sửa → Gói dòng → Không bao giờ nối các dòng đã được gói


3
Tôi xin lỗi vì tôi đã không giải thích: Nó sẽ không định dạng nó. Nó chỉ đơn giản là sẽ không làm rối tung nó, nếu bạn làm điều đó theo cách thủ công.
Op De Cirkel

Bây giờ tôi đã hiểu. Eclipse thực sự không thể định dạng các phương thức chuỗi nhưng nó sẽ giữ nguyên định dạng như tôi đã nhập. Cảm ơn.
Johann

không có gì cụ thể cho các cuộc gọi theo chuỗi. Nếu bạn buộc chức năng cuộc gọi gói, nó sẽ quấn ở khắp mọi nơi
Op De Cirkel

@Johann Điều đó không đúng, Eclipse có thể định dạng các cuộc gọi phương thức chuỗi.
Deepak Azad

@OpDeCirkel Bạn nên thêm nhận xét của mình vào chính câu trả lời. Giúp mọi người chú ý đến nó dễ dàng hơn: Nhận xét nàyI am sorry i did not explain: It won't format it. It will simply not mess it up, if you do it manually. –
Sandeep Shukla

7

Window> Preferences> Java> Code Style> Formater> Edit> Line wrap> Function Calls, hãy đặt 'Chính sách gói dòng' là 'Gói tất cả các phần tử, mọi phần tử trên một dòng mới'.


Điều này sẽ đưa vào dòng mới sau mỗi cuộc gọi chức năng, ngay cả khi họ không bị xiềng xích, và nếu bạn định dạng tập tin của bạn bằng cách bấm Ctrl + Shift + f, nó sẽ lộn xộn lên tất cả mọi thứ \
Op De Cirkel

1
Các chính sách khác cũng có sẵn, ví dụ: "Bọc tất cả các phần tử, ngoại trừ phần tử đầu tiên nếu không cần thiết". Một trong số chúng sẽ phù hợp với bạn :)
Deepak Azad

7

Đối với những người đã kiểm tra cài đặt định dạng mã eclipse trong kiểm soát nguồn (để định dạng mã nhất quán trong toàn bộ nhóm), .settingsthư mục sẽ được đăng ký.

Thuộc tính sẽ cung cấp cho bạn hành vi định dạng này nằm trong .settings/org.eclipse.jdt.core.prefstệp.

Tài sản là:

org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation=80

3

Nếu bạn sẵn sàng tự mình định dạng các phân đoạn đó, bạn có thể ngăn eclipse định dạng lại các phân đoạn đó bằng cách sử dụng:

// @formatter:off
...
// @formatter:on

Bạn có thể cần bật tính năng này trong tùy chọn của mình: http://archive.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/eclipse-news-part2.html#JavaFormatter

Xem thêm: Làm cách nào để tắt trình định dạng mã Eclipse cho một số phần nhất định của mã Java?


0

trong: Window-> Preferences-> Java-> Code Style-> Formater-> Edit-> Line wrap-> Hàm gọi-> Lời gọi đủ điều kiện

chọn Chính sách thụt lề làm thụt lề trên cột


-1

Tùy chỉnh trình định dạng nhật thực của bạn trong cả java và javascript. tăng dòng tối đa phù hợp với màn hình của bạn.Windows> tùy chọn

Biên tập

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.