Rozszerzanie ogólnej klasy abstrakcyjnej i poprawne użycie 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();
    }
}

Jak poprawnie nazwać super, aby przekazaćAT rodzajowyTool do konstruktora AbstractTool?

Wygląda na to, że bez względu na to, co wybioręAT być, kiedy oświadczamTool (Mówić,Tool<Thing>), że zawsze wracamAbstractThing zamiastThing. To wydaje się pokonać cel generycznych ...

Wsparcie?

questionAnswers(3)

yourAnswerToTheQuestion