Me está costando trabajo dominar los tipos genéricos de Java. Aquí hay un código simple que en mi opinión debería funcionar, pero obviamente estoy haciendo algo mal.Constructor de Java usando tipos genéricos
Eclipse informa de este error en BreweryList.java:
The method breweryMethod() is undefined for the type <T>
La idea es llenar un vector con las instancias de objetos que son una subclase de la clase fábrica de cerveza, por lo que la invocación sería algo así como:
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() {
}
}
Estoy seguro de que esto es una pregunta completas-genéricos-novato, pero estoy atascado. Gracias por cualquier consejo!
A recomendamos encarecidamente usar su propia 'BreweryFactory' en lugar de abusar de' Class'. Si puede evitar razonablemente la reflexión, hágalo. –
http://stackoverflow.com/ es mucho mejor para programar preguntas relacionadas. –
He visto esta pregunta hace unas horas. – Roman