Мне трудно обдумать общие типы Java. Вот простой фрагмент кода, который, на мой взгляд, должен работать, но я, очевидно, что-то делаю не так.
Eclipse сообщает об этой ошибке в BreweryList.java:
.
The method breweryMethod() is undefined for the type <T>
Идея состоит в том, чтобы заполнить Vector экземплярами объектов, которые являются подклассом класса Brewery, поэтому вызов будет выглядеть примерно так:
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() {
}
}
Я уверен, что это полный вопрос, но я застрял. Спасибо за любые советы!