Kotlin documentation पृष्ठ से:क्या आप सी # कोड के संदर्भ में कोड के इस टुकड़े को समझा सकते हैं?
// public final class Gson {
// ...
// public <T> T fromJson(JsonElement json,
// Class<T> classOfT)
// throws JsonSyntaxException {
// ...
ऊपर कोड स्निपेट में, मुझे लगता है कि Class<T>
बात के अलावा सब कुछ समझते हैं। मुझे लगता है यह निम्न में से सी # बराबर है:
public sealed class Gson
{
public T FromJson<T>(JsonElement json,
System.Type Type)
{
}
}
और ग्राहक कोड कुछ ऐसा कहना होगा:
var gson = new Gson();
var customer = gson.FromJson<Customer>(json, typeof(Customer));
लेकिन मुझे यकीन है क्योंकि है कि पूरे System.Type
पैरामीटर में अनावश्यक प्रतीत नहीं हो सकता विधि परिभाषा में सामान्य प्रकार पैरामीटर T
का चेहरा।
इसके अलावा, उस पृष्ठ पर एक ही स्थान पर, class.java
क्या है निम्न स्निपेट में?
inline fun <reified T: Any> Gson.fromJson(json):
T = this.fromJson(json, T::class.java)
मुझे लगता है कि जावा में वर्ग Class
System.Type
इसलिए यदि आप कहते हैं, typeof(Customer)
चाहता था के समान है, आप Customer.class
कहेंगे? क्या वो सही है?
class.java
क्या है?
जावा जेनेरिक प्रकार रनटाइम पर उपलब्ध नहीं हैं। यदि विधि को उन्हें जानने की आवश्यकता है तो आपको उन्हें पैरामीटर के रूप में पास करना होगा। और 'class.java' एक अच्छी तरह से प्रलेखित कोटलिन संगतता निर्माण है। – chrylis
क्लास ऑब्जेक्ट (java.lang.Class) क्या है? [Http://stackoverflow.com/questions/4453349/what-is-the-class-object-java-lang-class) –
@ संभावित डुप्लिकेट AndreasBrunnet एक प्रासंगिक डुप्लिकेट नहीं है; सवाल जेनेरिक मिरर के बारे में है। – chrylis