कोटलिन 1.1 दिया गया। कुछ वर्ग के एक instance
के लिए, instance::class.java
और instance.javaClass
लगभग बराबर होने लगते हैं:उदाहरण :: class.java बनाम example.javaClass
val i = 0
println(i::class.java) // int
println(i.javaClass) // int
println(i::class.java === i.javaClass) // true
एक सूक्ष्म अंतर, हालांकि नहीं है:
val c1: Class<out Int> = i::class.java
val c2: Class<Int> = i.javaClass
instance.javaClass
negligibly कम है, लेकिन instance::class.java
के साथ और अधिक संगत है एक प्रकार पर इसी तरह के उपयोग। आप कुछ प्रकार पर .javaClass
उपयोग कर सकते हैं, परिणाम नहीं हो सकता है कि तुम क्या उम्मीद करेंगे:
println(i::class.java === Int::class.java) // true
println(i.javaClass === Int.javaClass) // false
println(Int::class.java === Int.javaClass) // false
println(Int.javaClass) // class kotlin.jvm.internal.IntCompanionObject
तो, मैं तर्क था कि यह बेहतर है और अधिक स्थिरता के लिए .javaClass
का उपयोग कभी नहीं करने के लिए। क्या इसके खिलाफ कोई तर्क है?
मुझे लगता है कि मैंने कहीं पढ़ा है कि 'जावा क्लास' को बहिष्कृत माना जाना है, लेकिन मुझे अभी यह नहीं मिल रहा है। – marstran