Quote:
Originariamente inviato da Rintrah84
Ok, ti ringrazio, intendi dire se ho implementato tutti i sottotipi che prevedo possano essere usati per popolare in mio buffer?
Tnx
|
Sì, ovvero finchè nel buffer ci infili oggetti il cui tipo implementa l'interfaccia Misurabile, quando poi andrai a invocare il metodo misura() su un oggetto a caso del buffer stesso avrai la garanzia che tutto funge; in caso contrario a runtime partirebbe una ClassCastException.
Per fare le cose in maniera un po' più type safe, potresti fare uso dei Generics; in particolare rendere il tuo buffer generalizzabile facendo in modo che il client debba specificare il tipo di elementi inseribili nel buffer.
Esempio: supponiamo che buffer sia una lista implementa dalla classe ArrayList.
Usiamo i Generics per specificare che gli elementi inseribili sono solo quelli che implementano l'interfaccia Misurabile:
Codice:
// dichiarazione
List<Misurabile> buffer;
// inizializzazione
buffer = new ArrayList<Misurabile>();
Ora se in buffer provi a cacciarci oggetti non Misurabili, che so, una java.lang.String per esempio,
il compilatore si lamenta.
Quindi hai una maggiore type safety perchè il problema si manifesta già a compile-time, mentre prima accadeva solo a run-time.