วิธีการห่อหุ้มจะเรียกใช้บรรทัดแยกต่างหากใน Eclipse สำหรับ Java


105

Eclipseฉันยังไม่ได้ประสบความสำเร็จในการหาวิธีการที่จะตัดการโทรแต่ละวิธีการใน ตัวอย่างเช่นฉันมีสิ่งนี้:

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

แต่ฉันต้องการสิ่งนี้จริงๆ:

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

ไม่มีอะไรในส่วน "การตัดบรรทัด" ในEclipseดูเหมือนว่าจะให้ผลลัพธ์นี้แก่ฉัน

คำตอบ:


187

เสริมคำตอบของ Deepak Azad สิ่งที่คุณต้องการมีดังต่อไปนี้:

Windows : หน้าต่าง→ค่ากำหนด→ Java →รูปแบบโค้ด
→ฟอร์แมตเตอร์→แก้ไข→การตัดบรรทัด (แท็บ)

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

จากนั้นในรายการทางด้านซ้ายให้เลือก:

การเรียกใช้ฟังก์ชัน→การเรียกใช้ที่ผ่านการรับรอง

ด้านล่างรายการนี้ตั้งค่านโยบายการตัดบรรทัดเป็น:

ห่อองค์ประกอบทั้งหมดยกเว้นองค์ประกอบแรกหากไม่จำเป็น

ตรวจสอบ :

บังคับให้แยกแม้ว่าเส้นจะสั้นกว่าความกว้างของเส้นสูงสุด

สุดท้ายตั้งค่านโยบายการเยื้องเป็น (ขอบคุณ@Turbo ):

เยื้องคอลัมน์

ควรให้พฤติกรรมที่ตรงกับที่คุณขอ


โบนัส: Android Studio / IntelliJ Idea:

Mac OS : Android Studio → Preferences ( Cmd +,) → Editor → Code Style → Java → แท็บWrapping And Braces → Chained method

เลือก

ห่อเสมอ

และตรวจสอบ

จัดแนวเมื่อมีหลายเส้น


2
ขอบคุณ. วิธีนี้ใช้ไม่ได้return new SomeClass().A().B().C();กับการเรียกแต่ละวิธีในบรรทัดแยกกัน
Harvey

1
@ ChristianGarcía +1 สำหรับคำตอบที่ดี ข้อสังเกตประการหนึ่งจากฉัน (Eclipse neon): เมื่อฉันตั้งค่าIndent on columnบางครั้งมันจะเพิ่มพื้นที่พิเศษ เช่นsession.createQueryกลายเป็นsession .createQueryและอื่น ๆ การเปลี่ยนกลับเป็นตัวเลือกเริ่มต้นทำให้ปัญหาสำหรับฉัน
Sayan Pal

สิ่งนี้จะแทรกแท็บหลังการเรียกใช้ครั้งแรก เพื่อหลีกเลี่ยงปัญหานี้ฉันต้องเลือก "ใช้ช่องว่างเพื่อเยื้องเส้นที่ห่อไว้" ภายใต้การเยื้อง
Daniel Nitzan

12

หน้าต่าง→การตั้งค่า→ Java →รูปแบบโค้ด→ตัวจัดรูปแบบ→แก้ไข→การตัดบรรทัด→ไม่เข้าร่วมบรรทัดที่ห่อไว้แล้ว


3
ฉันขอโทษฉันไม่ได้อธิบาย: มันจะไม่จัดรูปแบบ มันจะไม่ทำให้สับสนหากคุณทำด้วยตนเอง
Op De Cirkel

ตอนนี้ฉันเข้าใจแล้ว Eclipse ไม่สามารถจัดรูปแบบวิธีการล่ามโซ่ได้จริง แต่จะยังคงการจัดรูปแบบตามที่ฉันพิมพ์ไว้ ขอบคุณ.
Johann

ไม่มีอะไรเฉพาะเจาะจงสำหรับการโทรที่ถูกล่ามโซ่ หากคุณบังคับให้มีการตัดสายฟังก์ชันมันจะตัดทุกที่
Op De Cirkel

@Johann นั่นไม่ถูกต้อง Eclipse สามารถจัดรูปแบบการเรียกเมธอดแบบ chain ได้
Deepak Azad

@OpDeCirkel คุณควรเพิ่มความคิดเห็นของคุณในคำตอบเอง ทำให้คนสังเกตเห็นได้ง่ายขึ้น: ความคิดเห็นนี้I 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

หน้าต่าง> การตั้งค่า> Java> รูปแบบโค้ด> ตัวจัดรูปแบบ> แก้ไข> การตัดบรรทัด> การเรียกใช้ฟังก์ชันตั้งค่า 'นโยบายการตัดบรรทัด' เป็น 'ตัดองค์ประกอบทั้งหมดทุกองค์ประกอบในบรรทัดใหม่'


สิ่งนี้จะวางบรรทัดใหม่ทุกการเรียกใช้ฟังก์ชันแม้ว่าจะไม่ถูกล่ามโซ่ก็ตามและถ้าคุณจัดรูปแบบไฟล์ด้วย Ctrl + Shift + f มันจะทำให้ทุกอย่างยุ่งเหยิง \
Op De Cirkel

1
นอกจากนี้ยังมีนโยบายอื่น ๆ เช่น "รวมองค์ประกอบทั้งหมดยกเว้นองค์ประกอบแรกหากไม่จำเป็น" หนึ่งในนั้นน่าจะเหมาะกับคุณ :)
Deepak Azad

7

สำหรับผู้ที่มีการตั้งค่าการจัดรูปแบบโค้ด eclipse ที่ตรวจสอบในการควบคุมแหล่งที่มา (สำหรับการจัดรูปแบบรหัสที่สอดคล้องกันทั้งทีม) .settingsโฟลเดอร์จะถูกเช็คอิน

คุณสมบัติที่จะทำให้คุณมีพฤติกรรมการจัดรูปแบบนี้อยู่ใน.settings/org.eclipse.jdt.core.prefsไฟล์

คุณสมบัติคือ:

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

3

หากคุณยินดีที่จะจัดรูปแบบของเซ็กเมนต์เหล่านั้นด้วยตัวคุณเองคุณสามารถป้องกันไม่ให้ eclipse ฟอร์แมตเซ็กเมนต์เหล่านั้นใหม่โดยใช้:

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

คุณอาจต้องเปิดใช้งานสิ่งนี้ในการตั้งค่าของคุณ: http://archive.eclipse.org/eclipse/downloads/drops/R-3.6-201006080911/eclipse-news-part2.html#JavaFormatter

ดูเพิ่มเติม: จะปิดตัวจัดรูปแบบโค้ด Eclipse สำหรับบางส่วนของโค้ด Java ได้อย่างไร



-1

กำหนดรูปแบบ eclipse ของคุณเองทั้งใน java และ javascript เพิ่มเส้นสูงสุดที่พอดีกับหน้าจอของคุณWindows> การตั้งค่า

แก้ไข

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.