Membungkus panggilan metode berantai pada baris terpisah di Eclipse untuk Java


105

Saya belum berhasil menemukan cara membungkus setiap pemanggilan metode Eclipse. Misalnya, saya punya ini:

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

Tapi saya sangat menginginkan ini:

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

Tidak ada apa pun di bawah bagian "Garis Pembungkus" di yang Eclipsetampaknya memberi saya hasil ini.

Jawaban:


186

Melengkapi jawaban Deepak Azad, yang sebenarnya Anda butuhkan adalah sebagai berikut:

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

Mac OS : ADT → Preferensi → Java → Gaya Kode
→ Formatter → Edit → Pembungkusan garis (tab)

Kemudian, pada daftar di sebelah kiri, pilih:

Panggilan Fungsi → Panggilan yang memenuhi syarat

Sekarang di bawah daftar ini, atur Line wrapping policy ke:

Bungkus semua elemen, kecuali elemen pertama jika tidak perlu

Cek :

Pisahkan paksa, meskipun garis lebih pendek dari lebar garis maksimum

Terakhir, setel kebijakan Indentasi ke (terima kasih @Turbo ):

Indentasi pada kolom

Ini akan memberi Anda perilaku persis seperti yang Anda minta.


BONUS: Android Studio / IntelliJ Idea:

Mac OS : Android Studio → Preferences ( Cmd +,) → Editor → Code Style → Java → tab Wrapping And Braces → Panggilan metode berantai

Pilih

Bungkus selalu

dan cek

Sejajarkan saat multiline


2
Terima kasih. Ini tidak berfungsi return new SomeClass().A().B().C();dengan setiap panggilan metode pada baris terpisah.
Harvey

1
@ ChristianGarcía +1 untuk jawaban yang bagus. Satu pengamatan dari saya (Eclipse neon): Saat saya menyetel Indent on column, terkadang menambahkan ruang ekstra; misalnya session.createQuerymenjadi session .createQuerydan sebagainya. Mengembalikan ke opsi default menyortir masalah bagi saya.
Sayan Pal

Ini menyisipkan tab setelah pemanggilan pertama. Untuk menghindarinya, saya harus mencentang "Gunakan spasi untuk membungkus garis indentasi" di bawah Indentasi.
Daniel Nitzan

12

Window → Preferences → Java → Code Style → Formater → Edit → Line wrapping → Jangan pernah menggabungkan baris yang sudah dibungkus


3
Saya minta maaf saya tidak menjelaskan: Ini tidak akan memformatnya. Itu tidak akan mengacaukannya, jika Anda melakukannya secara manual.
Op De Cirkel

Sekarang saya mengerti. Eclipse tidak dapat benar-benar memformat metode berantai tetapi itu akan mempertahankan pemformatan seperti yang saya ketik. Terima kasih.
Johann

tidak ada yang khusus untuk panggilan yang dirantai. Jika Anda memaksakan pembungkusan panggilan fungsi, pembungkusan itu akan terselubung di mana
Op De Cirkel

@Johann Itu salah, Eclipse dapat memformat panggilan metode berantai.
Deepak Azad

@OpDeCirkel Anda harus menambahkan komentar Anda di jawaban itu sendiri. Buat lebih mudah bagi orang untuk menyadarinya: Komentar iniI 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 wrapping> Function Calls, atur 'Line wrapping policy' sebagai 'Bungkus semua elemen, setiap elemen pada baris baru'.


Ini akan membuat baris baru setiap pemanggilan fungsi, bahkan jika mereka tidak dirantai, dan jika Anda memformat file Anda dengan Ctrl + Shift + f, itu akan mengacaukan semuanya \
Op De Cirkel

1
Kebijakan lain juga tersedia, misalnya "Bungkus semua elemen, kecuali elemen pertama jika tidak perlu". Salah satunya harus bekerja untuk Anda :)
Deepak Azad

7

Bagi mereka yang memiliki pengaturan pemformatan kode gerhana diperiksa ke dalam kontrol sumber (untuk pemformatan kode yang konsisten di seluruh tim), .settingsfolder tersebut akan diperiksa.

Properti yang akan memberi Anda perilaku pemformatan ini ada di dalam .settings/org.eclipse.jdt.core.prefsfile.

Properti tersebut adalah:

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


0

di: Window-> Preferences-> Java-> Code Style-> Formater-> Edit-> Line wrapping-> Function call-> Permintaan yang memenuhi syarat

pilih kebijakan indentasi sebagai indentasi pada kolom


-1

Sesuaikan formatter eclipse Anda di java dan javascript. tingkatkan garis maks dengan yang sesuai dengan layar Anda.Windows> preferensi

Edit

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.