Sobes.tech
Junior

Wat weet je over de Object-klasse?

sobes.tech AI

Antwoord van AI

java.lang.Object is de basisklasse in de hiërarchie van Java-klassen. Elke klasse erft impliciet van Object.

Belangrijkste methoden:

  • equals(Object obj): Vergelijkt het huidige object met een ander object op gelijkheid. Standaard vergelijkt het referenties.
  • hashCode(): Geeft de hash-code van het object terug. Gebruikt in hash-gebaseerde collecties (bijvoorbeeld HashMap, HashSet). Als twee objecten gelijk zijn volgens equals(), moeten hun hashCode() gelijk zijn.
  • toString(): Geeft een stringrepresentatie van het object. Standaard geeft het de klasse naam + @ + de hash-code in hexadecimale formaat. Wordt vaak overschreven voor een meer informatieve weergave.
  • getClass(): Geeft een Class-object dat de klasse van het object tijdens runtime vertegenwoordigt.
  • notify(): Hervat de uitvoering van een thread die wacht op de monitor van dit object.
  • notifyAll(): Hervat de uitvoering van alle threads die wachten op de monitor van dit object.
  • wait() / wait(long timeout) / wait(long timeout, int nanos): Laat de huidige thread wachten totdat een andere thread notify() of notifyAll() op dit object aanroept, of totdat de gespecificeerde tijd is verstreken. Alleen aan te roepen binnen gesynchroniseerde blokken of methoden.
  • clone(): Maakt een kopie van dit object en geeft het terug. Vereist de implementatie van de Cloneable-interface.
  • finalize(): Wordt aangeroepen door de garbage collector voordat het object wordt verwijderd. Niet aanbevolen vanwege de onvoorspelbaarheid.

Voorbeeld van overschrijven van equals() en 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 +
               '}';
    }
}

De Object-klasse biedt fundamentele mechanismen die nodig zijn voor het werken met objecten in Java, zoals vergelijking, hashing, thread-synchronisatie en het verkrijgen van informatie over de klasse.