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.

Johann
sumber

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

Christian García
sumber
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

Op De Cirkel
sumber
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'.

Deepak Azad
sumber
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
Andy Guibert
sumber
0

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

pilih kebijakan indentasi sebagai indentasi pada kolom

Shiv Krishna Jaiswal
sumber
-1

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

Edit

Jajikanth pydimarla
sumber