PDA

Visualizza la versione completa : implements java


Geppo Hylar
13-09-2003, 14:48
Salve vi espongo questa domanda riguardo al capitolo delle interfacce:

public class Counter implements Comparable {
...
public int compareTo(Object x) {
Counter otherCounter = (Counter)x;

// perchè (Counter)x è tra parentesi? cosa vuol dire?

if (val < otherCounter.val) return -1;
if (val > otherCounter.val) return +1;
/* else */ return 0;
}
}

quella riga non è un costruttore perchè manca il new, e allora che cosa vuol dire?

Zero-2
13-09-2003, 15:27
Quella scrittura indica l'operazione di Cast.
Cioè si cambia il tipo relativo a quell'oggetto e quest'operazione è permessa solo se l'oggetto era di quel tipo.
Esempio.

Casa c=new Casa();
c'è un metodo che accetta solo Object come parametro e in quanto ogni oggetto che noi creiamo deriva da Object va bene . però quando andiamo a leggere il parametro verrà passato come Object e quindi noi dobbiamo riportarlo allo stato precedente per utilizzarlo e qui entra in gioco il cast.

void copia(Object x){
Casa k=(Casa)x;
}

Se x non fosse stato un oggetto Casa avremmo avuto un ClassCastException.

Altrimenti , se non eseguissimo il cast , non potremmo utilizzare i metodi dell'oggetto Casa.

Loading