C'è un modo per dire "questo metodo restituisce this
" usando Generics?C'è un modo per dire "il metodo restituisce questo" in Java?
Ovviamente, voglio sovrascrivere questo metodo in sottoclassi, quindi la dichiarazione dovrebbe funzionare bene con @Override
.
Ecco un esempio:
class Base {
public Base copyTo (Base dest) {
... copy all fields to dest ...
return this;
}
}
class X extends Base {
@Override
public X copyTo (X dest) {
super.copyTo (dest);
... copy all fields to dest ...
return this;
}
}
public <T extends Base> T copyTo (Base dest)
non funziona affatto: ricevo "Tipo non corrispondente: Impossibile convertire da Base a T". Se lo forzo con un cast, l'override fallisce.
A parte il mio (o meglio, di Martin Odersky) modo; dettagliato sopra –
Sì, anche se ci sono modi per implementare questo tipo di cose senza "Questo" * in realtà * è Questo. –
Bene, "Questo" può essere qualsiasi cosa che implementa l'interfaccia Elenco , che a causa della cancellazione potrebbe essere un elenco di qualsiasi cosa. Sarei interessato se si potesse ingannare completamente –