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?