Estendendo Classe Abstrata Genérica e Uso Correto de Super

public abstract class AbstractTool<AT extends AbstractThing> {
    protected ArrayList<AT> ledger;
    public AbstractTool() {
        ledger = new ArrayList<AT>();
    }

    public AT getToolAt(int i) {
        return ledger.get(i);
    }

    // More code Which operates on Ledger ...

}

public class Tool<AT extends AbstractThing> extends AbstractTool {
    public Tool() {
        super();
    }
}

Como faço para chamar corretamente super para passar oAT genérico deTool ao construtor AbstractTool?

Parece que não importa o que eu escolherAT para ser quando eu declaroTool (Dizer,Tool<Thing>), que eu sempre recebo de voltaAbstractThing ao invés deThing. Isso parece derrotar o objetivo dos genéricos ...

Socorro?

questionAnswers(3)

yourAnswerToTheQuestion