Eclipse เพิ่มประสิทธิภาพการนำเข้าเพื่อรวมการนำเข้าแบบคงที่


411

อย่างไรก็ตามมีวิธีให้ Eclipse ค้นหาการอิมพอร์ตแบบสแตติกโดยอัตโนมัติหรือไม่? ตัวอย่างเช่นตอนนี้ฉันได้อัพเกรดเป็น Junit 4 ในที่สุดฉันก็อยากจะเขียน:

assertEquals(expectedValue, actualValue);

กดCtrl+ Shift+ Oและเพิ่ม Eclipse:

import static org.junit.Assert.assertEquals;

บางทีฉันถามมากเกินไป

คำตอบ:


572

ฉันใช้ Eclipse Europa ซึ่งมีส่วนกำหนดค่าที่ชื่นชอบ:

หน้าต่าง> การกำหนดค่าตามความชอบ> Java> ตัวแก้ไข> การช่วยเหลือเนื้อหา> รายการโปรด

ในของฉันฉันมีรายการดังต่อไปนี้ (เมื่อเพิ่มใช้ "ประเภทใหม่" และละเว้น.*):

org.hamcrest.Matchers.*
org.hamcrest.CoreMatchers.*
org.junit.*
org.junit.Assert.*
org.junit.Assume.*
org.junit.matchers.JUnitMatchers.*

ทั้งหมดยกเว้นส่วนที่สามเป็นการนำเข้าแบบคงที่ โดยการให้สิ่งเหล่านั้นเป็นรายการโปรดถ้าฉันพิมพ์ " assertT" และกดCtrl+Space Eclipse จะเสนอassertThatเป็นคำแนะนำและถ้าฉันเลือกมันจะเพิ่มการนำเข้าสแตติกที่เหมาะสมลงในไฟล์


26
AH - เคล็ดลับก็คือการเพิ่มorg.junit.Assertผ่านทางNew Type...ที่.*เป็นแล้วโดยปริยาย
KomodoDave

5
ถูกต้องหรือCtrl+Shift+oไม่การนำเข้าอัตโนมัติจะไม่เพิ่มการนำเข้าที่จำเป็นและในความเป็นจริงคุณต้องเลื่อนเคอร์เซอร์และเลือกAdd static import..ตัวเลือก เป็นเรื่องน่าเสียดายที่กล่องโต้ตอบรายการเลือกนำเข้าอัตโนมัติตามปกติไม่แสดง
KomodoDave

2
@ J.Stoever - หากคุณใช้ JUnit 4 คุณจะต้องใช้แบบฟอร์ม Hamcrest:assertThat(value, is(expected));
David Harkness

2
ฉันลองสิ่งนี้กับ Eclipse Kepler แต่ก็ไม่มีประโยชน์ ฉันรีสตาร์ท Eclipse เช่นกัน ไม่มีการเติมข้อความอัตโนมัติไม่มีตัวเลือกการนำเข้าแบบคงที่เมื่อทำการเลื่อนหรือกด CTRL + 1 ทุกคนประสบกับปัญหานี้หรือไม่
Magnilex

2
Intellij Idea สนับสนุนสิ่งนี้นอกกรอบ ความอัปยศคราสไม่ได้
Neeraj

242

หากคุณเน้นวิธีAssert.assertEquals(val1, val2)และกดCtrl+ Shift+ M(เพิ่มการนำเข้า) ก็จะเพิ่มเป็นการนำเข้าแบบคงที่อย่างน้อยใน Eclipse 3.4


11
cmd-shift-M บนเครื่องแม็ค
Joshua Goldberg

15
ใน Eclipse Juno ฉันจัดการเพื่อทำให้มันทำงานได้ถ้าฉันเน้นเฉพาะวิธีการและหลังจากนั้นใช้ CTRL + SHIFT + M.
ktulinho

5
นี่ควรเป็นผู้ชนะ!
Clint Eastwood

ใช้ได้กับฟิลด์แบบคงที่ AX -> X (สูง AX และ Ctrl + Shift + M) ขอบคุณ สิ่งที่ฉันต้องการ
Eyad Ebrahim

5
ได้ผลกับฉันใน Luna ตรวจสอบให้แน่ใจว่าเคอร์เซอร์อยู่ทางด้านขวาของช่วงเวลา หวังว่าฉันจะได้เรียนรู้เกี่ยวกับปีที่ผ่านมา!
HDave

31

Eclipse 3.4 มีส่วนรายการโปรดใต้ Window-> Preferences-> Java-> Editor-> Assist Content

หากคุณใช้org.junit.Assertบ่อยคุณอาจพบว่ามีค่าบางอย่างที่จะเพิ่มเข้าไปในนั้น


21

ไม่ใช่สิ่งที่ฉันต้องการ แต่ฉันพบวิธีแก้ปัญหา ใน Eclipse 3.4 (Ganymede) ไปที่

Window-> Preferences-> Java-> Editor-> Content Assist

และตรวจสอบช่องทำเครื่องหมายสำหรับการใช้การนำเข้าคงที่ (เพียง 1.5 หรือสูงกว่า)

สิ่งนี้จะไม่นำเข้ามาใน Optimize Imports แต่ถ้าคุณใช้ Quick Fix ( CTRL+ 1) ในบรรทัดมันจะให้ตัวเลือกในการเพิ่มการนำเข้าคงที่ซึ่งดีพอ


10

จากการช่วยงานในเนื้อหาสำหรับการนำเข้าแบบคงที่

ในการรับข้อเสนอการช่วยงานในเนื้อหาสำหรับสมาชิกแบบคงที่ให้กำหนดค่ารายการสมาชิกแบบคงที่ที่คุณโปรดปรานบนหน้าJava > Editor > Content Assist > Favoritesการกำหนดค่าตามความชอบเปิดหน้าการกำหนดค่าตามความชอบ
ตัวอย่างเช่นถ้าคุณเพิ่มjava.util.Arrays.*หรือorg.junit.Assert.*ลงในรายการนี้วิธีการคงที่ทั้งหมดของประเภทนี้ที่ตรงกับคำนำหน้าเสร็จจะถูกเพิ่มไปยังรายการข้อเสนอ

เปิด Window » Preferences » Java » Editor » Content Assist » Favorites

ป้อนคำอธิบายรูปภาพที่นี่


5

สำหรับการทดสอบ SpringFramework ฉันขอแนะนำให้เพิ่มด้านล่างด้วย

org.springframework.test.web.servlet.request.MockMvcRequestBuilders
org.springframework.test.web.servlet.request.MockMvcResponseBuilders
org.springframework.test.web.servlet.result.MockMvcResultHandlers
org.springframework.test.web.servlet.result.MockMvcResultMatchers
org.springframework.test.web.servlet.setup.MockMvcBuilders
org.mockito.Mockito

เมื่อคุณเพิ่มข้างต้นเป็นชนิดใหม่มันจะเพิ่มโดยอัตโนมัติ * ลงในแพ็คเกจ



2

เลือกค่าคงที่พิมพ์

Ctrl + 1  (quick fix)

เลือก "แปลงเป็นการนำเข้าแบบคงที่" จากรายการแบบเลื่อนลง

"แก้ไขด่วน" มีตัวเลือกแม้ว่าจะไม่ใช่ข้อผิดพลาด


1

ใน Eclipse 4.9 คุณสามารถนำเข้าการร้องขอที่มีอยู่โดยใช้การแก้ไขด่วน

การแก้ไขด่วนแบบใหม่ถูกนำมาใช้ซึ่งอนุญาตให้ผู้ใช้แปลงการเข้าถึงฟิลด์แบบสแตติกและวิธีสแตติกเพื่อใช้การนำเข้าแบบสแตติก เป็นไปได้ที่จะแทนที่เหตุการณ์ทั้งหมดในเวลาเดียวกัน

รายละเอียดเพิ่มเติมที่นี่

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