2011-11-01 14 views
8

यह शायद एक बहुत ही आसान सवाल है। अरे मैं एक छात्र हूं और जावा के लिए अपेक्षाकृत नया हूं और मैं वर्तमान में मध्यरात्रि के लिए पढ़ रहा हूं जो मेरे पास है।इंटरफेस पर .getclass() का उपयोग

System.out.println(interface1.getClass().getName());

interface1interface1 = class1 घोषित किया गया है: अभ्यास प्रश्न मैं पर अटक कर रहा हूँ में से एक क्या होता है जब आप की तरह कुछ है। मुझे पूरा यकीन है कि यह "कक्षा 1" प्रिंट करेगा और "इंटरफ़ेस 1" नहीं होगा क्योंकि interface1 कक्षा सही नहीं है? लेकिन मुझे यकीन नहीं है क्योंकि सवाल यह भी कहता है कि यदि यह संकलन समय त्रुटि उत्पन्न करता है तो ऐसा कहें। एक बार जब मैं एक प्रश्नोत्तरी वापस लेता हूं और फिर भी मुझे उलझन में डाल दिया जाता है कि मुझे समस्या क्यों गलत हो गई है, तो हमारे प्रोफेसर हमें और अधिक धोखा देने के लिए जाने जाते हैं।

+3

आपके बारे में क्या परीक्षण अपने आप को कि इस कार्यक्रम लेखन और यह क्रियान्वित करते हुए? –

+0

क्या इसके साथ जाने के लिए और कोड है? हम नहीं जानते कि 'कक्षा' क्या है। – AusCBloke

+0

मैंने वास्तव में अभ्यास मिडटर पर कई कार्यक्रमों के लिए किया होगा और यह एक कार्यक्रम नहीं था बल्कि सिर्फ एक प्रश्न था। इसके अलावा मैं इंटरफेस के बारे में कुछ और जानना चाहता हूं जो मेरे नीचे सज्जन ने ठीक किया था। – Erik

उत्तर

10

ऐसा इसलिए नहीं है क्योंकि यह एक इंटरफ़ेस है जिसे आपको class1 मिलेगा, लेकिन getClass() उदाहरण के रनटाइम क्लास को हल करेगा। चूंकि आपने इसे class1 के रूप में बनाया है, यह रनटाइम प्रकार है। आपको संकलन-समय त्रुटि नहीं देगी।

प्रतिबिंब के माध्यम से एक इंटरफेस के लिए Class ऑब्जेक्ट प्राप्त करना संभव है।

वैकल्पिक रूप से आप class कीवर्ड के माध्यम से अधिक सीधे वर्ग पहुँच सकते हैं:

String className = Runnable.class.getName(); 
+0

तो मूल रूप से, यदि मेरे पास इंटरफ़ेस है getClass() विधि का उपयोग करता है तो यह हमेशा के लिए इंटरफ़ेस को परिभाषित करने के लिए जो भी मैंने परिभाषित किया है, उसका वर्ग वापस कर देगा? – Erik

+0

@Erik यह सही है। क्योंकि getClass() को इंस्टेंस की कक्षा के कार्यान्वयन के लिए हल किया जाता है। यह गतिशील रूप से हल किया गया है, संकलन समय पर कुछ स्थिर रूप से निर्धारित नहीं है। संपादन के लिए धन्यवाद, उपयोगकर्ता 268396, जो वास्तव में अधिक प्रत्यक्ष है। क्षमा करें अगर मैं समझ में नहीं आता, थोड़ा थका हुआ हो रहा हूं। –

+0

बहुत बहुत धन्यवाद, उम्मीद है कि मुझे कल ए मिल जाएगा: पी – Erik

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