मैं अपनी परियोजना में गुवा TypeToken कक्षा का उपयोग कर रहा हूं, लेकिन मुझे एक अप्रत्याशित परिणाम मिल रहा है।अमरूद टाइप टोकन और जेनेरिक क्लासेस
मैं MyGenericClass<T>
है:
public class MyGenericClass<T> implements MyInterface {
private TypeToken<T> recordType;
public MyGenericClass(String name) {
this.recordType = new TypeToken<T>(getClass()) {};
// ...
}
// ...
@SuppressWarnings("unchecked")
protected Class<T> getRecordType() {
return (Class<T>) recordType.getRawType();
}
}
तो अगर मैं new MyGenericClass<String>()
के माध्यम से एक वस्तु का दृष्टांत और फिर getRecordType()
मैं java.lang.String
प्राप्त करने की उम्मीद आह्वान, बजाय मैं java.lang.Object
हो रही है।
लेकिन, अगर मैं सामान्य वर्ग का विस्तार:
public class MyStringImpl extends MyGenericClass<String> {
// ...
}
और इस नए वर्ग का दृष्टांत: new MyStringImpl()
तो मैं सही परिणाम मिलता है।
ऐसा क्यों हो रहा है? क्या यह TypeToken
का अनुमानित व्यवहार है?
* "क्या यह टाइप टोकन का अपेक्षित व्यवहार है?" * हां, यह है। – Radiodef