मुझे, कृपया एक स्पष्टीकरण के लिए पूछें।जावा में नेस्टेड जेनरिक
विधि छदाम अंदर() मैं सामान्य नेस्टेड वर्ग In<T>
public class A {
public static class In<T> {
}
public static <X> void doit() {
new In<X>();
}
}
मैं, ज़ाहिर है, भी वर्ग के किसी भी सदस्य तक पहुँच सकते हैं intantiate कर सकते हैं In<T>
public class A {
public static class In<T> {
public static class Inner<U> {
}
}
public static <X> void doit() {
new In.Inner<X>();
}
}
मैं अभी भी पहुँच सकते हैं विधि doit() से कक्षा In<T>
के सदस्य जब दोनों वर्ग और विधि किसी अन्य वर्ग के अंदर घोंसला होती है कंटेनर
public class A {
public static class Container {
public static class In<T> {
public static class Inner<U> {
}
}
public static <X> void doit() {
new In.Inner<X>();
}
}
}
हालांकि, एक सामान्य बनाने
public class A<V> {
public static class Container {
public static class In<T> {
public static class Inner<U> {
}
}
public static <X> void doit() {
new In.Inner<X>();
}
}
}
संकलक में के रूप में एक त्रुटि excepts: "सदस्य प्रकार A.Container.In, पैरामिट्रीकृत होना चाहिए, क्योंकि यह एक पैरामिट्रीकृत प्रकार के साथ योग्य है"
क्या आप कृपया मुझे स्पष्टीकरण दे सकते हैं?
ध्यान दें कि पिछले कोड कक्षाओं और विधि में स्थिर हैं।
सूचना भी है कि जेनेरिक वर्ग कंटेनर,
public class A<V> {
public static class Container<Z> {
public static class In<T> {
public static class Inner<U> {
}
}
public static <X> void doit() {
new In.Inner<X>();
}
}
}
में कोड को संकलित रूप में बना रही है।
और यह भी निम्नलिखित कोड जहां कंटेनर नहीं रह सामान्य है लेकिन वर्ग Inner<U>
के निर्माता की कॉल संकलित अब अधिक योग्य Container.In.Inner<X>()
public class A<V> {
public static class Container {
public static class In<T> {
public static class Inner<U> {
}
}
public static <X> void doit() {
new Container.In.Inner<X>();
}
}
}
धन्यवाद है।
एक्लिप्स (कम से कम मेरे लिए) की समस्या की तरह लगता है ... मैं समस्याग्रस्त कोड को 'javac' के माध्यम से कमांड लाइन से संकलित करने में सक्षम था। –
धन्यवाद @ पावेल, मैं बस सोच रहा था कि जावा के मेरे ज्ञान में कुछ गलत था या नहीं। – rvend
मुझे यह जोड़ना है कि मैंने एक्लिप्स बगजिला के माध्यम से कुछ समय बिताया और वहां कुछ भी नहीं मिला।आपको इसे नवीनतम ग्रहण निर्माण और बग की रिपोर्ट करने की कोशिश करनी चाहिए यदि यह काम नहीं करता है। –