วิธีใด (หรือทางลัด) ในการนำเข้าคลาสใน IntelliJ IDEA โดยอัตโนมัติเช่นใน Eclipse


123

ใน Eclipse ขณะเขียนโค้ดใน Java แล้วกดCtrl+ Shift+ Oauto นำเข้าคลาสทั้งหมดโดยอัตโนมัติ
ใน NetBeans สิ่งนี้ทำได้ด้วยไฟล์Ctrl + Shift+I +

มีวิธีใดบ้างในการทำสิ่งนี้ใน IntelliJ IDEA?

ฉันค้นหาทางลัดที่เทียบเท่าใน google, StackOverflow, การกำหนดค่า IntelliJ IDEA และทางลัดแป้นพิมพ์อย่างเป็นทางการของเว็บไซต์ IntelliJ คุณไม่ควรพลาด



4
เมื่อค้นหาคำสั่ง / แป้นพิมพ์ลัดให้พิมพ์ Ctrl-shift-A (หรือ Cmd-shift-A บน Mac) แล้วค้นหาคำสั่ง ตัวอย่างเช่นที่นี่การพิมพ์ "imports" จะแสดงคำสั่ง "Optimize imports" และแป้นพิมพ์ลัด
JB Nizet

2
"เพิ่มประสิทธิภาพการนำเข้า" ใช้งานไม่ได้ในการเพิ่มคลาส
bywronski

การนำเข้าอัตโนมัติสำหรับชั้นเรียนจะใช้งานได้หากคุณเปิดใช้งานภายใต้ "การตั้งค่า> ตัวแก้ไข> ทั่วไป> นำเข้าอัตโนมัติ"
Andrea Bergonzo

นี่เป็นความล้มเหลวครั้งใหญ่ที่สุดของ intellij มันเป็นความเจ็บปวด การได้รับความขัดแย้งและการรวมเข้าด้วยกันในการนำเข้าเป็นเรื่องโง่ แต่ intellij ไม่สามารถช่วยคุณแก้ไขได้อย่างง่ายดาย
bharal

คำตอบ:


103

IntelliJ IDEA ไม่มีการดำเนินการเพื่อเพิ่มการนำเข้า แต่มีความสามารถในการทำเช่นคุณพิมพ์ หากคุณเปิดใช้งาน "เพิ่มการนำเข้าที่ชัดเจนอย่างรวดเร็ว" ในการตั้งค่า> ตัวแก้ไข> ทั่วไป> การนำเข้าอัตโนมัติ IntelliJ IDEA จะเพิ่มเข้าไปในขณะที่คุณพิมพ์โดยไม่ต้องใช้ทางลัดใด ๆ นอกจากนี้คุณยังสามารถเพิ่มคลาสและแพ็กเกจเพื่อแยกออกจากการนำเข้าอัตโนมัติเพื่อสร้างคลาสที่คุณใช้งานหนักซึ่งขัดแย้งกับคลาสอื่น ๆ ที่มีชื่อเดียวกันอย่างชัดเจน

สำหรับชั้นเรียนที่มีความคลุมเครือ (หรือคุณต้องการให้ปิดตัวเลือก "เพิ่มการนำเข้าที่ไม่คลุมเครือในทันที") เพียงพิมพ์ชื่อของชั้นเรียน (แค่ชื่อก็ใช้ได้ไม่จำเป็นต้องมีคุณสมบัติครบถ้วน) ใช้การเติมโค้ดและเลือกคลาสเฉพาะที่คุณต้องการ:

ใส่คำอธิบายภาพที่นี่

สังเกตชื่อที่มีคุณสมบัติครบถ้วนทางด้านขวา เมื่อฉันเลือกรายการที่ต้องการและกด Enter IDEA จะเพิ่มคำสั่งนำเข้าโดยอัตโนมัติ สิ่งนี้ใช้ได้เหมือนกันถ้าฉันพิมพ์ชื่อของตัวสร้าง สำหรับวิธีการคงที่คุณสามารถพิมพ์วิธีการที่คุณต้องการต่อไปได้ ในภาพหน้าจอต่อไปนี้ยังไม่มีการนำเข้าคลาส "StringUtils"

ใส่คำอธิบายภาพที่นี่

อีกวิธีหนึ่งคือพิมพ์ชื่อคลาสแล้วกดAlt+ Enterหรือ+ Enterเพื่อ "แสดงการดำเนินการตามความตั้งใจและการแก้ไขด่วน" จากนั้นเลือกตัวเลือกการนำเข้า

ถึงแม้ว่าผมจะไม่เคยใช้มันฉันคิดคราสรหัสฟอร์แมตของบุคคลที่สาม plug-in ที่จะทำสิ่งที่คุณต้องการ มันแสดงรายการ "เลียนแบบการนำเข้าของ Eclipse ที่ปรับให้เหมาะสม" เป็นคุณลักษณะ ดูคำแนะนำสำหรับข้อมูลเพิ่มเติม แต่ในท้ายที่สุดฉันสงสัยว่าคุณจะพบว่าฟีเจอร์ IDEA ในตัวทำงานได้ดีเมื่อคุณคุ้นเคยกับกระบวนทัศน์ของพวกเขา โดยทั่วไป IDEA ใช้แนวคิด "พัฒนาโดยเจตนา" ดังนั้นแทนที่จะขัดจังหวะงานพัฒนาของฉันเพื่อเพิ่มคำสั่งนำเข้าฉันแค่พิมพ์คลาสที่ฉันต้องการ (ความตั้งใจของฉัน) จากนั้น IDEA จะเพิ่มคำสั่งนำเข้าสำหรับคลาสให้ฉันโดยอัตโนมัติ


7
วิธีนี้ใช้ได้ผลมากกว่าเมื่อคุณแก้ไขไฟล์เก่า
Adam

สิ่งนี้ไม่ได้ผลสำหรับฉัน เมื่อฉันกด Enter หลังจากเลือกคลาสที่ปรากฏในรายการเติมข้อความอัตโนมัติ IntelliJ จะไม่นำเข้า แต่จะเขียนชื่อแบบเต็มของคลาสแทน นี่เป็นสิ่งที่น่ารำคาญและไร้ประโยชน์มาก คุณรู้วิธีแก้ไขปัญหานี้หรือไม่?
Rodrigo

^ สาเหตุของพฤติกรรมนี้คือคลาสที่ฉันพยายามนำเข้าไม่อยู่ในเส้นทางการสร้าง เมื่อเพิ่มแล้วให้กด Enter นำเข้าคลาสอย่างถูกต้อง
Rodrigo

3
ฉันมาถึงคำถามนี้โดยหวังว่าจะพบคีย์ลัดดังกล่าวสำหรับ IntelliJ ปัญหาคือถ้าฉันแสดงความคิดเห็นส่วนใหญ่ของโค้ดที่มีคลาส IntelliJ จะลบการนำเข้าเนมสเปซโดยอัตโนมัติ ตอนนี้ถ้าฉันไปและยกเลิกการใส่ข้อคิดเห็นรหัส IntelliJ จะไม่นำเข้าเนมสเปซซ้ำเหมือนเดิมและมันจะค่อนข้างปวดหัวในการทำ ALT + Enter สำหรับแต่ละรายการ วิธีแก้ปัญหาใด ๆ
Rahul Saini

ฉันเห็นด้วยกับ @RahulSaini ในเรื่องนี้ ไม่มีเหตุผลที่จะต้องมีแผนที่หลักสองแผนที่แยกกันสำหรับกิจกรรมเดียว ฉันไม่ต้องการและไม่ควรต้องทำหลาย ๆ อย่างเพื่อให้การกระทำเดียวสำเร็จ ฉันจะบอกว่า ณ จุดนี้ intellij เป็นเพียงแค่การทะเลาะวิวาทเกี่ยวกับเรื่องนี้และไม่มีเหตุผลที่แท้จริงที่จะไม่ "จัดระเบียบ" การนำเข้าซึ่งต่างจากการ "เพิ่มประสิทธิภาพ" การนำเข้า ฉันอยากจะโหวตคำตอบนี้แม้ว่ามันจะถูกต้องในทางเทคนิคก็ตาม
peekay

73

ไม่ทั้งหมดในครั้งเดียว แต่คุณสามารถกด

Alt + Enter

ผู้คนคิดว่ามันใช้ได้เฉพาะเมื่อคุณอยู่ที่รายการนั้น ๆ แต่ใช้งานได้จริงสำหรับ "ประเภทถัดไปที่หายไป" ดังนั้นหากคุณกดAlt+ ต่อEnterไป IDEA จะแก้ไขทีละรายการจนกว่าจะแก้ไขทั้งหมด


1
ฉันคิดว่าคุณกำลังอ้างถึงสัญลักษณ์แป้นคีย์บอร์ด สามารถเพิ่มได้โดยใช้kbdแท็ก<kbd>Alt</kbd> + <kbd>Enter</kbd>
GuiSim

1
ไปที่คลาสที่หาไม่เจอแล้วกด⌥ + Enter ดีใจที่ฉันเลื่อนลง
Ajak6

1
มีวิธีทำการแมปใหม่Alt+Enterให้เป็นชุดที่เหมาะกับนิ้วมากขึ้นหรือไม่ ฉันคิดไม่ออกในIntelliJ IDEA > Preferences > Keymapเมนู
laylaylom

1
ฉันพบวิธี Eclipse ในการเพิ่มคำสั่งการนำเข้าที่หายไปง่ายกว่าของ IDEA ฉันมักจะสับสนว่าจะวางเคอร์เซอร์ของเมาส์ไว้ที่ใดก่อนที่จะพิมพ์ Alt + Enter
vikramvi

Alt + Enter ร่วมกับ F2 (Next Highlighted Error) มักจะค่อนข้างเร็วแม้กระทั่งสำหรับคลาสขนาดใหญ่ (เกินไป)
osundblad

10

ดูเหมือนว่า IntelliJ IDEA จะนำเข้าคลาสที่ไม่ได้รับโดยอัตโนมัติและคุณสามารถนำเข้าได้โดย hit Alt+ Enterด้วยตนเอง


8

ฉันคิดว่าทางออกที่ดีที่สุดแม้ว่าจะไม่เหมือนกับ Eclipse / Netbeans ทุกประการคือการเปลี่ยนการตั้งค่า "เพิ่มประสิทธิภาพการนำเข้า"

ภายใต้ Preferences > Editor > General > Auto Import

ชุด Add unambiguous imports on the fly

แก้ไข: ใช้วิธีนี้เมื่อมีมีการนำเข้าคลุมเครือ IntelliJ จะแจ้งให้ทราบและแล้วคุณสามารถใช้Alt+ Enterวิธีการที่ระบุไว้ในคำตอบโดย Wuaner

ฉันพบว่าเกือบตลอดเวลาการนำเข้าที่เหมาะสมที่สุดอยู่ที่ด้านบนสุดของรายการ


1
@ ราชาฉันไม่แน่ใจว่าทำไมเหมือนกัน ฉันรู้ว่าเมื่อฉันบอกเพื่อนร่วมงานว่าพวกเขาเลือกที่จะไม่ใช้วิธีนี้แม้ว่า ...
comfytoday

คำแนะนำค่อนข้างชัดเจน นำเข้าunambiguousคลาสโดยอัตโนมัติเท่านั้น และฉันได้ใช้มันตั้งแต่สองวันที่ผ่านมาในโครงการ 3000+ ชั้นเรียนของฉัน ใช้งานได้เหมือนมีเสน่ห์ ขอบคุณสำหรับการแบ่งปัน.
Raja Anbazhagan

5

ไม่สามารถนำเข้าทั้งหมดในครั้งเดียว แต่สามารถใช้ชุดค่าผสมต่อไปนี้:

ALT+ Enter-> แสดงเจตนากระทำและการแก้ไขด่วน

F2 -> ข้อผิดพลาดที่เน้นถัดไป


3

อีกทางเลือกหนึ่งคือขอให้ IDEA ทำงานเหมือนคราสด้วยปุ่มลัด eclipse คุณสามารถใช้ทางลัดคราสทั้งหมดโดยเปิดใช้งานสิ่งนี้

ขั้นตอนมีดังนี้

1- กับความคิดที่เปิดให้กดControl + ` ตัวเลือกต่อไปนี้จะปรากฏขึ้น

ใส่คำอธิบายภาพที่นี่

2- เลือก Keymap คุณจะเห็นป๊อปอัปอื่น เลือก Eclipse ที่นั่น

ใส่คำอธิบายภาพที่นี่

3- ตอนนี้กด Ctrl + Shift + Oเสร็จแล้ว!


ฉันเหนื่อย. จะไม่ทำให้ "จัดระเบียบการนำเข้า" ทำงานในลักษณะของ Eclipse
Florian F

0

ใช้control+ option+ Lเพื่อนำเข้าแพ็คเกจโดยอัตโนมัติและลบแพ็คเกจที่ไม่ได้ใช้บน Mac โดยอัตโนมัติ

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