2012-10-13 9 views
6

यह शायद एक बेवकूफ सवाल है, लेकिन मुझे कहीं और कुछ नहीं मिला है। मैं एंड्रॉयड के मूल सिद्धांत बताता जा रहा हूँ, और जब मैं अपने को चुनने के एक और गतिविधि चलाने के लिए विशेष रूप से एक आशय बनाने का प्रयास करें, ट्यूटोरियल यह इस तरह से निर्माण करने के लिए मुझसे कहता है: जहां "DisplayMessageActivity" हैएक एंड्रॉइड इरादा बनाते समय और लक्ष्य गतिविधि निर्दिष्ट करते समय, यह ".class" वाक्यविन्यास क्या है?

Intent intent = new Intent(this, DisplayMessageActivity.class); 

मैं जिस गतिविधि को चला रहा हूं उसके लिए कक्षा। मुझे क्या नहीं मिलता है, ".class" भाग क्या है? वह पैरामीटर, जैसा कि मैं इसे समझता हूं, क्लास ऑब्जेक्ट माना जाता है। क्या "कक्षा" मेरी गतिविधि उप-वर्ग का एक क्षेत्र है? या जब मैं "DisplayMessageActivity.class" कहता हूं, क्या मैं एक वास्तविक .class फ़ाइल का जिक्र कर रहा हूं (जो थोड़ा अजीब लगता है)?

किसी भी मदद की सराहना की जाती है!

उत्तर

5

जबकि .class सामान्य फ़ील्ड पहुंच प्रतीत होता है, यह वास्तव में एक विशेष भाषा निर्माण है, जिसे Retrieving Class Objects जावा ट्यूटोरियल में बहुत अच्छी तरह से समझाया गया है।

इसे कहते हैं, बोली:

हैं प्रकार उपलब्ध है, लेकिन कोई उदाहरण यह प्रकार का नाम करने के लिए ".class" जोड़कर एक कक्षा प्राप्त करना संभव है तो वहाँ है। यह एक प्राचीन प्रकार के लिए कक्षा प्राप्त करने का सबसे आसान तरीका भी है।

और वे उदाहरण दे:

boolean b; 
Class c = b.getClass(); // compile-time error 

Class c = boolean.class; // correct 


जावा के दिन उपयोग करने के लिए मेरा दिन में, यह एक बेहद इस्तेमाल किया निर्माण नहीं है, और कई इसे से अनजान हैं। आम तौर पर इसका उपयोग जेनिक्स के साथ किया जाता है और जैसे कि सामान्य रूप से कक्षाओं को उनके उदाहरणों के बजाय निर्दिष्ट करते हैं।

मुझे उम्मीद है कि इससे मदद मिलती है। :)

4

मुझे जो नहीं मिलता है, वह ".class" भाग क्या है? वह पैरामीटर, जैसा कि मैं इसे समझता हूं, क्लास ऑब्जेक्ट माना जाता है।

यह सही है।

SomeClass.class वास्तव में जावा वाक्यविन्यास है जिसका अर्थ है "मुझे Class ऑब्जेक्ट दें जो SomeClass प्रकार से मेल खाता है"। और ध्यान दें कि आप इसका उपयोग किसी भी प्रकार ... केवल कक्षा के नामों पर नहीं कर सकते हैं।

क्या "कक्षा" मेरी गतिविधि उप-वर्ग का एक क्षेत्र है?

नहीं। यह एक क्षेत्र नहीं है। आप इसके बारे में एक स्थिर क्षेत्र के समान सोच सकते हैं, लेकिन असल में यह ऐसी कोई बात नहीं है। (someArray.length वैसे ही जैसे वास्तव में सरणी वस्तु का एक क्षेत्र नहीं है।)

या जब मैं कहता हूँ "DisplayMessageActivity.class", मैं एक वास्तविक .class फ़ाइल

यह करने के लिए बात कर रहा है की चर्चा करते हुए हूँ Classऑब्जेक्ट ... ".class" फ़ाइल नहीं।

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