Eclipse for Java'da ayrı bir satırda zincirleme yöntem çağrılarını sarma


105

Her yöntem çağrısını nasıl tamamlayacağımı bulmada başarılı olamadım Eclipse. Örneğin, şuna sahibim:

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

Ama bunu gerçekten istiyorum:

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

"Satır Kaydırma" bölümünün altındaki hiçbir şey Eclipsebana bu sonucu vermiyor.

Yanıtlar:


186

Deepak Azad'ın cevabını tamamlayan, tam olarak ihtiyacınız olan şey şudur:

Windows : Pencere → Tercihler → Java → Kod Stili
→ Biçimlendirici → Düzenle → Satır kaydırma (sekme)

Mac OS : ADT → Tercihler → Java → Kod Stili
→ Biçimlendirici → Düzenle → Satır kaydırma (sekme)

Ardından soldaki listede şunları seçin:

İşlev Çağrıları → Nitelikli çağrılar

Şimdi bu listenin altında Satır kaydırma politikasını şu şekilde ayarlayın:

Gerekli değilse ilk öğe hariç tüm öğeleri sarın

Kontrol edin :

Satır maksimum çizgi genişliğinden daha kısa olsa bile bölünmeye zorla

Son olarak, Girinti politikasını ayarlayın (teşekkürler @Turbo ):

Sütunda girinti

Size tam olarak istediğiniz davranışı vermelidir.


BONUS: Android Studio / IntelliJ Fikri:

Mac OS : Android Studio → Tercihler ( Cmd +,) → Editör → Kod Stili → Java → Sarma ve Ayraçlar sekmesi → Zincirleme yöntem çağrıları

seç

Her zaman sar

ve kontrol et

Çok satırlı olduğunda hizala


2
Teşekkürler. Bu, return new SomeClass().A().B().C();ayrı bir hattaki her yöntem çağrısı için geçerli değildir .
— Harvey

1
@ ChristianGarcía +1 harika cevap için. Benden bir gözlem (Eclipse neon): Ayarladığımda Indent on columnbazen fazladan boşluk ekler; örneğin session.createQueryolur session .createQueryve böyle devam eder. Varsayılan seçeneğe geri dönmek, sorunu benim için sıraladı.
— Sayan Pal

Bu, ilk çağrıdan sonra bir sekme ekler. Bundan kaçınmak için, Girinti altında "Sarılmış satırları girintilemek için boşluk kullanın" seçeneğini işaretlemem gerekiyordu.
— Daniel Nitzan

12

Pencere → Tercihler → Java → Kod Stili → Biçimlendirici → Düzenle → Satır kaydırma → Önceden sarılmış satırlara asla katılma


3
Üzgünüm açıklamadım: Biçimlendirmeyecek. Manuel olarak yaparsanız, hiçbir şey mahvetmez.
— Op De Cirkel

Şimdi anlıyorum. Eclipse aslında zincirleme yöntemleri biçimlendiremez ancak yazdığım biçimlendirmeyi koruyacaktır. Teşekkürler.
— Johann

zincirleme aramalara özgü hiçbir şey yok. İşlev çağrısı sarmalamaya zorlarsanız, her yere sarılır
— Op De Cirkel

@Johann Bu doğru değil, Eclipse zincirleme yöntem çağrılarını biçimlendirebilir.
— Deepak Azad

@OpDeCirkel Yorumunuzu cevabın kendisine eklemelisiniz. İnsanların bunu fark etmesini kolaylaştırın: Bu yorumI 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

Pencere> Tercihler> Java> Kod Stili> Biçimlendirici> Düzenle> Satır kaydırma> İşlev Çağrıları, 'Satır kaydırma ilkesini' 'Tüm öğeleri, her öğeyi yeni bir satıra sar' olarak ayarlayın.


Bu, zincirlenmemiş olsalar bile her işlev çağrısını yeni bir satıra koyar ve dosyanızı Ctrl + Shift + f ile biçimlendirirseniz, her şeyi
— bozar

1
Diğer politikalar da mevcuttur, örneğin "Gerekmiyorsa ilk öğe hariç tüm öğeleri sarın". Bunlardan biri sizin için çalışmalı :)
— Deepak Azad

7

Tutulma kodu formatlama ayarlarını kaynak kontrolünde kontrol edenler için (tüm ekipte tutarlı kod formatlaması için), .settingsklasör teslim edilir.

Size bu biçimlendirme davranışını verecek özellik .settings/org.eclipse.jdt.core.prefsdosyanın içindedir.

Mülkiyet:

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


0

in: Pencere-> Tercihler-> Java-> Kod Stili-> Biçimlendirici-> Düzenle-> Satır sarma-> İşlev çağrısı-> Nitelikli çağrı

Sütunda girinti olarak girinti ilkesini seçin


-1

Eclipse biçimlendiricinizi hem java hem de javascript'te özelleştirin. Ekranınıza uyan maksimum çizgiyi artırın.Windows> tercihler

Düzenle

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.