मेरे पास एक सामान्य जावा इंटरफ़ेस Id<T>
एक विधि T getId()
और एक वर्ग MyClass
है जो Id<Long>
लागू करता है। जब मैं जावा प्रतिबिंब का उपयोग कर MyClass
पर घोषित विधियों का निरीक्षण करता हूं, तो मुझे दो विधियां दिखाई देती हैं: एक वापसी प्रकार Long
, और एक वापसी प्रकार Object
के साथ। दूसरी विधि कहां से आती है और मैं इसे कैसे हटा सकता हूं?जेनेरिक जावा इंटरफ़ेस को कार्यान्वित करना अतिरिक्त विधि
package mypackage;
import java.lang.reflect.Method;
public class MainClass {
public static void main(String[] args) {
for (Method method : MyClass.class.getDeclaredMethods()) {
System.out.println(method);
}
// prints out two lines
// public java.lang.Long mypackage.MyClass.getId() <-- ok
// public java.lang.Object mypackage.MyClass.getId() <-- not ok
}
}
interface Id<T> {
T getId();
}
class MyClass implements Id<Long> {
@Override
public Long getId() {
return new Long(0);
};
}
रिटर्नटाइप 'लांग' के साथ एक विधि में आप एक आदिम' लम्बा 'भी वापस कर सकते हैं उदा। 'वापसी 0 एल;'। यह एक 'लांग' के लिए autoboxed होगा। आपके प्रश्न का उत्तर नहीं, लेकिन शायद आपको पता नहीं था। –