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

Respuestas a la pregunta(3)

Su respuesta a la pregunta