Di seguito posto il codice che mi ha annichilito...
La mia domanda e' questa:codice:public interface PricedItem { public void setPrice(double price); public double getPrice(); } L'interfaccia PricedItem definisce il comportamento di un articolo con prezzo. Possiamo a questo punto implementare l'interfaccia in una classe applicativa Book nel modo seguente public class Book implements PricedItem { private String title; private String author; private double price; ... public void setPrice(double price) { this.price = price; } public double getPrice() { return price; } } Il codice client che necessita del prezzo di un libro può quindi essere scritto così: double computeTotalPrice(Collection items) { Iterator it = items.iterator(); PricedItem item; double total = 0; while (it.hasNext()) { item = (PricedItem)it.next(); total += item.getPrice(); } return total; }
nella riga
total += item.getPrice();
come diamine faccio a chiamare un metodo di un'interfaccia???
devo effettuare certamente un casting, dato che il metodo next() della classe Iterator restituisce un Object, ma com'e' possibile che a run time la JVM si accorga del reale tipo dell'oggetto se il metodo e' eseguito su una variabile di tipo PricedItem???

Rispondi quotando