Genérico atornilla colección no relacionada.
¿Por qué las colecciones que no están relacionadas con la clase de plantilla eliminan su tipo? Aquí hay un ejemplo: (Lo sentimos, no se compilará debido al error que me causa confusión).
package test;
import java.util.ArrayList;
import java.util.List;
public class TemplateTest {
public static class A { }
public static class B<T extends Comparable> {
List<A> aList = new ArrayList<A>();
public List<A> getAList() {
return aList;
}
public int compare(T t, T t1) {
return t.compareTo(t1);
}
}
public static void main(String[] args) {
B b = new B();
for (A a : b.getAList()) { //THIS DOES NOT WORK
}
List<A> aList = b.getAList(); //THIS WORKS
for (A a : aList) {
}
}
}
Este código arroja un error en la compilación:
test/TemplateTest.java:24: incompatible types
found : java.lang.Object
required: test.TemplateTest.A
for (A a : b.getAList()) {
Si especifico la plantilla deB
me gustaB<String>
, o si quito la plantilla de B completamente, entonces todo está bien.
¿Que esta pasando?
EDITAR: la gente señaló que no había necesidad de hacer B genérica, así que agregué a B