मुझे जावा जेनेरिक प्रकारों के चारों ओर अपने सिर को लपेटने में कठिनाई हो रही है। यहां कोड का एक साधारण टुकड़ा है जो मेरे दिमाग में काम करना चाहिए, लेकिन मैं स्पष्ट रूप से कुछ गलत कर रहा हूं।जेनेरिक प्रकारों का उपयोग कर जावा कन्स्ट्रक्टर
ग्रहण BreweryList.java में इस त्रुटि रिपोर्ट:
The method breweryMethod() is undefined for the type <T>
विचार वस्तुओं है कि शराब की भठ्ठी वर्ग का एक उपवर्ग हैं के उदाहरण के साथ एक वेक्टर को भरने के लिए है, इसलिए मंगलाचरण होगा कुछ की तरह:
BreweryList breweryList = new BreweryList(BrewerySubClass.class, list);
BreweryList.java
package com.beerme.test;
import java.util.Vector;
public class BreweryList<T extends Brewery> extends Vector<T> {
public BreweryList(Class<T> c, Object[] j) {
super();
for (int i = 0; i < j.length; i++) {
T item = c.newInstance();
// breweryMethod() is an instance method
// of Brewery, of which <T> is a subclass (right?)
c.breweryMethod();
// "The method breweryMethod() is undefined
// for the type <T>"
}
}
}
,210
Brewery.java
package com.beerme.test;
public class Brewery {
public Brewery() {
super();
}
protected void breweryMethod() {
}
}
BrewerySubClass.java
package com.beerme.test;
public class BrewerySubClass extends Brewery {
public BrewerySubClass() {
super();
}
public void brewerySubClassMethod() {
}
}
मुझे यकीन है कि यह एक पूर्ण-जेनरिक-noob सवाल यह है हूँ, लेकिन मैं अटक कर रहा हूँ। किसी भी सुझाव के लिए धन्यवाद!
'कक्षा' का दुरुपयोग करने के बजाय अपने स्वयं के 'ब्रूवरी फैक्ट्री' का उपयोग करने का दृढ़ संकल्प। यदि आप उचित रूप से प्रतिबिंब से बच सकते हैं, तो ऐसा करें। –
http://stackoverflow.com/ प्रोग्रामिंग संबंधी प्रश्नों के लिए बहुत बेहतर है। –
मैंने कुछ घंटे पहले यह प्रश्न देखा है। – Roman