Todos os métodos das classes Object, além de mais sobre o método toString() - 1

"Olá, amigo!"

"Oi!"

"Hoje vamos estudar a classe Object.
Você já a conheceu e sabe que Object é a classe base para todas as classes. Ela praticamente não tem dados, mas tem vários métodos."

"Por que ele precisa de métodos? Alguém realmente cria instâncias da classe Object?"

"Veja desta forma: os métodos na classe Object são comuns em todas as classes. Em outras palavras, os criadores de Java identificaram vários métodos que, em sua opinião, toda classe deveria ter e os adicionaram à classe Object."

"E quando combinado com polimorfismo (a capacidade de substituir os métodos da classe Object em classes derivadas), isso se torna uma ferramenta muito poderosa."

"Vamos ver quais são esses métodos:"

Método Descrição
public String toString()
Retorna uma representação de string do objeto.
public native int hashCode()
public boolean equals(Object obj)
Um par de métodos usados ​​para comparar objetos.
public final native Class getClass()
Retorna um objeto especial que descreve a classe atual.
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()
Métodos para controlar o acesso a um objeto de diferentes threads. Para sincronização de threads.
protected void finalize()
Este método permite liberar recursos não-Java nativos: fechar arquivos, fluxos, etc.
protected native Object clone()
Este método permite clonar um objeto: cria uma duplicata do objeto.

"Esses métodos podem ser divididos em 6 grupos. Você já conhece alguns deles e conheceremos o restante nas próximas aulas."

"Por alguma razão, não estou vendo nada útil aqui."

"Amigo! Se esses métodos não fossem importantes, eles não os teriam adicionado a todos os objetos! Então, eu aconselho você a olhar mais de perto o que são e por que eles são necessários. Se eles parecem sem importância para você , então você não entendeu algo ou não entendeu algo corretamente."

"OK. Vou ouvir com atenção."

"Vamos começar com o método toString().

"Este método permite obter uma descrição textual de qualquer objeto. Sua implementação na classe Object é muito simples:"

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

"getClass() e hashCode() também são métodos da classe Object.
Chamar esse método normalmente produz um resultado como este:"

java.lang.Object@12F456

"E para que serve tal descrição?"

"Esta descrição permite que você conheça a classe do objeto para o qual o método foi chamado. Você também pode distinguir entre objetos; objetos diferentes terão dígitos diferentes após o símbolo @."

"Mas o valor real desse método está em outro lugar. Esse método pode ser substituído em qualquer classe para retornar uma descrição de objeto mais detalhada ou adequada."

"Mas há mais. Como você pode obter uma representação de texto de cada objeto, Java possibilitou a implementação de suporte para 'adicionar' Strings a objetos.
Confira:"

Código O que realmente acontece
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);

"Sim, eu uso isso regularmente. Especialmente quando estou escrevendo um programa ou procurando por bugs. É uma operação útil."