2008-09-18 22 views
35

के वर्ग फ़ाइल में एक द्वितीय श्रेणी निकालने मैं अक्सर पहले कोड refactor वर्ग मैं पर काम कर रहा हूँ अंदर एक आंतरिक वर्ग बनाने के द्वारा ग्रहण कर सकते हैं कक्षा फाइल यह नए वर्ग में कोड को रीफैक्टरिंग को बेहद आसान बनाता है क्योंकि ए) मैं केवल एक फ़ाइल से निपट रहा हूं, और बी) मैं नई फाइलें नहीं बनाता जब तक कि मेरे पास नाम/नामों का कोई अच्छा विचार न हो (कभी-कभी यह समाप्त होता है एक से अधिक वर्ग के रूप में)।अपने स्वयं के फ़ाइल

वहाँ किसी भी तरह से ग्रहण मुझे अंतिम कदम के साथ मदद कर सकता है? मुझे बस यह बताने में सक्षम होना चाहिए कि मैं किस वर्ग में कक्षा चाहता हूं, यह कक्षा के नाम से फ़ाइल नाम और पैकेज से निर्देशिका का पता लगा सकता है।

यह एक तुच्छ refactor और वास्तव में स्पष्ट की तरह लगता है, लेकिन मैं कीस्ट्रोक्स/इशारों/जो कुछ भी यह ऐसा करने के लिए को समझ नहीं सकता। मैंने ड्रैगिंग, मेनू, संदर्भ मेनू, और कीबोर्ड शॉर्टकट के माध्यम से ब्राउज़ करने का प्रयास किया है।

कोई भी इसे जानता है?

[संपादित करें] ये पहले से ही इस फ़ाइल में "शीर्ष स्तर" कक्षाएं, नहीं भीतरी वर्गों, और "चाल" मेरे लिए एक नया वर्ग बनाना चाहते प्रतीत नहीं होता है। यह एक कठिन तरीका है जिसे मैं आमतौर पर करता हूं - बाहर निकलना, खाली कक्षा बनाना, वापस आना और आगे बढ़ना शामिल है। मैं पूरी चीज को एक ही चरण में करना चाहता हूं।

उत्तर

43

मुझे खेद है कि मैंने पहले गलत जवाब दिया था। मैंने दोबारा जांच की, और यह बिल्कुल नहीं चाहता था कि आप चाहते हैं। हालांकि, 3.4 में, फिर भी, आपके लिए एक समाधान मिला।

हाइलाइट वर्ग, एक प्रति CTRL-C करते हैं या कटौती Ctrl-X, पैकेज आप कक्षा में जाने करना चाहती पर क्लिक करें और एक पेस्ट, CTRL-V है। ग्रहण ऑटो आपके लिए कक्षा उत्पन्न करेगा। शीर्ष स्तर पर

Convert सदस्य प्रकार नहीं है काफी काम करते हैं। ऐसा करने से बाहरी वर्ग का क्षेत्र बन जाएगा और एक कन्स्ट्रक्टर उत्पन्न होगा जो बाह्य वर्ग को पैरामीटर के रूप में ले जाएगा।

+0

तो करीब भीतरी वर्ग MyInnerClass ले जाएँ । यह वही है जो मैं चाहता हूं, लेकिन जब मैं ऐसा करता हूं तो पैकेज में पेस्ट ग्रे हो जाता है। मुझे आश्चर्य है कि ग्रहण का मेरा संस्करण बहुत पुराना है। 3.3.1.1? –

+0

मैंने अभी 3.3 में इसका परीक्षण किया और यह काम किया। हम्म ... शायद आप कक्षा रेखा की प्रतिलिपि चूक गए? – scubabbl

+2

समझ गया! केवल पैकेज एक्सप्लोरर में काम करता है, न कि नेविगेटर। आपका बहुत बहुत धन्यवाद! –

0

2 refactorings में किया जा सकता है:

  1. Convert सदस्य प्रकार शीर्ष स्तर ले जाने के लिए

1

राइट-क्लिक करें वर्ग के नाम (में स्रोत कोड) और रिफैक्टर चुनें -> सदस्य प्रकार को शीर्ष स्तर पर कनवर्ट करें। यह आपको पैकेज चुनने नहीं देता है, हालांकि।

28

ग्रहण 3.6 में, आप कर सकते हैं: Refactor -> नई फ़ाइल

+0

जिसने मेरे लिए नौकरी बनाई, धन्यवाद! –

+0

+1 यह वही था जो मैं ढूंढ रहा था!मैंने "ग्रहण बाहरी वर्ग में आंतरिक वर्ग निकालने" की खोज की थी, यह पहला सवाल था जो आया था, और यह मुझे सही जवाब था। धन्यवाद! – vergenzt

1

IntelliJ विचार/एंड्रॉयड स्टूडियो के लिए में ले जाएँ के प्रकार: Refactor -> ले जाएँ -> ऊपरी स्तर

संबंधित मुद्दे