नीचे मेरे पास एक सामान्य ओटर क्लास है, एक इनर क्लास जो बाहरी क्लास जेनरिक और गैर-जेनेरिक इनर इंटरफेस का उपयोग करता है।आंतरिक कक्षा और आंतरिक इंटरफेस के साथ जावा जेनरिक
public class OuterClass<E> {
public class InnerClass {
public E someMethod() {
return null;
}
}
public interface InnerInterface{
public void onEvent(OuterClass.InnerClass innerClass);
}
}
नीचे दी गई मुख्य विधि में, मैं बाहरी क्लाउड के दो उदाहरण, ओ 1 पैरामीटर के साथ, और ओ 2 के साथ उपयोग करता हूं। मेरा बेनामी आंतरिक वर्ग myListener बाहरी वर्ग (ई) के सामान्य प्रकार का उपयोग करने की कोशिश करता है। जैसा कि कोड नीचे है, संकलित नहीं करता है (इंटीजर i = innerClass.someMethod() - मिस्चैच टाइप करें: ऑब्जेक्ट से इंटीजर में कनवर्ट नहीं किया जा सकता है)।
public class Test {
public static void main(String[] args) {
OuterClass<Integer> o1 = new OuterClass<Integer>();
OuterClass<String> o2 = new OuterClass<String>();
OuterClass.InnerInterface innerInterface = new OuterClass.InnerInterface() {
@Override
public void onEvent(InnerClass innerClass) {
Integer i = innerClass.someMethod();
}
};
}
}
मुझे लगता है कि myListener व्यक्त करना चाहेंगे O1 के लिए है, और ई = पूर्णांक का उपयोग करना चाहिए, यह दोहराए बिना (दोहराए बिना, मैं पहले से ही यह जब O1 घोषित कहते हैं)। क्या यह संभव है?
बहुत धन्यवाद! फैटन।
आपकी इंटरफ़ेस विधि को भी सामान्यीकृत करने की आवश्यकता है। – Bombe