我很难绕过Java泛型类型。这里有一段简单的代码应该可以工作,但我显然做错了。使用泛型类型的Java构造函数
Eclipse中报告这个错误在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>"
}
}
}
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() {
}
}
我敢肯定,这是一个完全的仿制药 - 小白的问题,但我坚持。感谢您的任何提示!
强烈建议使用自己的'BreweryFactory'而不是滥用'Class'。如果你能合理地避免反思,那就这样做。 – 2010-03-16 19:12:38
http://stackoverflow.com/对于编程相关的问题要好得多。 – 2010-03-16 19:32:07
几个小时前我看到过这个问题。 – Roman 2010-03-16 23:23:59