Tutti i metodi delle classi Object, più altri sul metodo toString() - 1

"Ciao, Amico!"

"CIAO!"

"Oggi studieremo la classe Object. L'
hai già incontrata e sai che Object è la classe base per tutte le classi. Praticamente non ha dati, ma ha diversi metodi."

"Perché ha bisogno di metodi? Qualcuno crea davvero istanze della classe Object?"

"Guardala in questo modo: i metodi nella classe Object sono comuni a tutte le classi. In altre parole, i creatori di Java hanno identificato diversi metodi che, a loro avviso, ogni classe dovrebbe avere e li hanno aggiunti alla classe Object."

"E se combinato con il polimorfismo (la capacità di sovrascrivere i metodi della classe Object nelle classi derivate), questo diventa uno strumento molto potente."

"Vediamo quali sono questi metodi:"

Metodo Descrizione
public String toString()
Restituisce una rappresentazione in forma di stringa dell'oggetto.
public native int hashCode()
public boolean equals(Object obj)
Una coppia di metodi utilizzati per confrontare gli oggetti.
public final native Class getClass()
Restituisce un oggetto speciale che descrive la classe corrente.
public final native void notify()
public final native void notifyAll()
public final native void wait(long timeout)
public final void wait(long timeout, intnanos)
public final void wait()
Metodi per controllare l'accesso a un oggetto da diversi thread. Per la sincronizzazione dei thread.
protected void finalize()
Questo metodo ti consente di rilasciare risorse native non Java: chiudere file, flussi, ecc.
protected native Object clone()
Questo metodo consente di clonare un oggetto: crea un duplicato dell'oggetto.

"Questi metodi possono essere divisi in 6 gruppi. Alcuni li conosci già, il resto lo conosceremo nelle lezioni successive."

"Per qualche ragione, non vedo niente di utile qui."

"Amigo! Se questi metodi non fossero importanti, non li avrebbero aggiunti a ogni singolo oggetto! Quindi, ti consiglio di guardare più da vicino cosa sono e perché sono necessari. Se ti sembrano poco importanti , allora o non hai capito qualcosa o non hai capito qualcosa correttamente."

"OK. Ascolterò attentamente."

"Iniziamo con il metodo toString().

"Questo metodo ti consente di ottenere una descrizione testuale di qualsiasi oggetto. La sua implementazione nella classe Object è molto semplice:"

return getClass().getName() + "@" + Integer.toHexString(hashCode());

"getClass() e hashCode() sono anche metodi della classe Object.
La chiamata a questo metodo in genere produce un risultato come questo:"

java.lang.Object@12F456

"E a che serve una simile descrizione?"

"Questa descrizione ti consente di conoscere la classe dell'oggetto su cui è stato chiamato il metodo. Puoi anche distinguere tra oggetti; oggetti diversi avranno cifre diverse dopo il simbolo @."

"Ma il vero valore di questo metodo risiede altrove. Questo metodo può essere sovrascritto in qualsiasi classe per restituire una descrizione dell'oggetto più dettagliata o adatta."

"Ma c'è di più. Poiché puoi ottenere una rappresentazione testuale di ogni oggetto, Java ti ha reso possibile implementare il supporto per 'aggiungere' stringhe agli oggetti. Dai un'occhiata
:"

Codice Cosa succede davvero
int age = 18;
System.out.println("Age is " + age);

String s = String.valueOf(18);
String result = "Age is " + s;
System.out.println(result);
Student st = new Student("Vincent");
System.out.println("Student is " + st);

Student st = new Student("Vincent");
String result = "Student is " + st.toString();
System.out.println(result);
Car car = new Porsche();
System.out.println("My car is " + car);

Car car = new Porsche();
String result = "My car is " + car.toString();
System.out.println(result);

"Sì, lo uso regolarmente. Soprattutto quando scrivo un programma o cerco bug. È un'operazione utile."