Junior
O que sabes sobre a classe Object?
sobes.tech IA
Resposta da IA
java.lang.Object é a classe raiz na hierarquia de classes do Java. Cada classe herda implicitamente de Object.
Métodos principais:
equals(Object obj): Compara o objeto atual com outro objeto para verificar igualdade. Por padrão, compara referências.hashCode(): Retorna o código hash do objeto. Usado em coleções baseadas em tabelas hash (por exemplo,HashMap,HashSet). Se dois objetos forem iguais segundoequals(), seushashCode()devem ser iguais.toString(): Retorna uma representação em string do objeto. Por padrão, retorna o nome da classe +@+ o código hash em formato hexadecimal. Geralmente é sobrescrito para fornecer uma representação mais informativa.getClass(): Retorna um objetoClassque representa a classe do objeto em tempo de execução.notify(): Reanima a execução de uma thread que espera no monitor deste objeto.notifyAll(): Reanima a execução de todas as threads que esperam no monitor deste objeto.wait()/wait(long timeout)/wait(long timeout, int nanos): Faz a thread atual esperar até que outra thread chamenotify()ounotifyAll()neste objeto, ou até que o tempo especificado expire. Só pode ser chamado dentro de blocos ou métodos sincronizados.clone(): Cria e retorna uma cópia deste objeto. Requer a implementação da interfaceCloneable.finalize(): É chamado pelo coletor de lixo antes de remover o objeto. Não é recomendado seu uso devido à sua imprevisibilidade.
Exemplo de sobrescrita de equals() e hashCode():
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
Person person = (Person) o;
return age == person.age &&
Objects.equals(name, person.name);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
A classe Object fornece mecanismos fundamentais necessários para o funcionamento dos objetos em Java, como comparação, hash, sincronização de threads e obtenção de informações sobre a classe.