Classe Object
La classe java.lang.Object
è quella dalla quale discendono per default tutte le altre classi,
per cui i suoi metodi sono disponibili in tutti gli oggetti.
Alcuni metodi:
-
public boolean equals (Object
obj)
restituisce true
se il contenuto (non il riferimento,
come per l'operatore ==) di due oggetti è uguale. Implementa una
relazione di equivalenza, gode quindi delle proprietà di riflessività,
simmetria, transitività e consistenza. Deve essere ridefinito
in tutte le classi su cui è necessario effettuare confronti; in
caso contrario viene utilizzato l'operatore ==.
-
public String toString ()
restituisce una stringa
che "rappresenta testualmente" l'oggetto. Deve essere ridefinito nelle
classi.
La definizione in
Object restituisce il nome della classe di appartenenza seguito da @ e
dalla rappresentazione esadecimale del codice hash dell'oggetto.
-
protected Object clone ()
serve per ottenere
una copia dell'oggetto, ottenuta allocando una nuova istanza e copiandovi
i valori di tutte le variabili (d'istanza). Il clone di un oggetto e' una
copia superficiale (shallow copy) e non profonda (deep
copy): eventuali oggetti contenuti nell'oggetto da clonare non vengono
a loro volta clonati, ma ne viene copiato il riferimento. La deep copy
si puo' implementare con un altro metodo.
Il prospetto
generale di dichiarazione di un metodo clone e' il seguente:
modificatore class
nomeclasse implements Clonable {
public Object
clone() {
nomeclasse
obj = new nomeclasse (parametri);
istruzioni
per copiare i campi in obj;
return
obj;
}
}
Clonable
e' un interfaccia. L'operazione di clonazione in Java e' speciale ed ogni
classe che contiene un metodo di clonazione deve implementare quella interfaccia.
