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.