8

कुछ इस तरह विचार करें:संकलन समय पर सिंगलटन ऑब्जेक्ट की कक्षा कैसे प्राप्त करें?

object Singleton 

val cls: Class[Singleton] = ??? 

क्या मैं ??? के बजाय लिखने के लिए क्या है?

मैंने classOf[Singleton], classOf[Singleton.type], Singleton.type की कोशिश की, लेकिन कुछ भी काम नहीं किया।

(मैं निश्चित रूप से getClass के बारे में, classOf के क्रम संस्करण पता है, लेकिन है कि मैं क्या पूछ रहा हूँ नहीं है।)

उत्तर

6

यहाँ एक समाधान है, लेकिन यह काफी नहीं है ...

object Singleton 

val cls : Class[Singleton] = Singleton.getClass.asInstanceOf[Class[Singleton]] 

संपादित करें: एक और प्रश्न/उत्तर पढ़ने के बाद समाधान पूरा किया: Scala equivalent of Java java.lang.Class<T> Object

नोट 1: टाइप एरर इसे विशेष रूप से उपयोगी होने से रोक देगा, उदाहरण के लिए पैटर्न मिलान में। एक अच्छा स्पष्टीकरण

नोट 2: scala -explaintypes ध्वज प्रकार त्रुटियों को समझने में काफी आसान है, संदर्भित प्रश्न/उत्तर देखें।

HTH

+1

'.asInstanceOf [AnyRef] 'काम करने के लिए इसकी आवश्यकता नहीं दिखती है। – axel22

+0

अच्छा बिंदु! अद्यतन उत्तर, धन्यवाद – laher

4

आप इस समस्या से अकेले नहीं हैं। जवाब यह है: वर्तमान में Singleton.getClass से बचने का कोई तरीका नहीं है। अधिक जानकारी के लिए this टिप्पणी देखें classOf[Singleton]

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