Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3
Excerpt

java.lang.Object er superklassen til alle klasser, og metodene definert i Object kan derfor kalles på alle objekter og er spesielt relevante å kunne og evt. redefinere i egne klasser.

For vanlig programmering er det først og fremst toString- og equals-metodene som er interessant:

String toString()

Denne metoden brukes for å lage en String av (innholdet til) et objekt, typisk til bruk for utskrift ved feilretting. Det er altså ikke et poeng at returverdien fra toString() skal ta seg pent ut for en sluttbruker, men være informativ for programmereren. Metoden som er ferdigimplementert i Object og som brukes hvis du ikke lager en selv, vil gi deg en String som inneholder det fulle klassenavnet (altså med pakkenavnet) etterfulgt av en kode. Dette er nok til å skille objekter fra hverandre, men ikke si noe om innholdet i/tilstanden til objektet. Når en lager en egen metode, så er nettopp det poenget: Å vise både typen og (den meste relevante delen av) innholdet/tilstanden.

Les mer om dette på siden om toString()-metoden.

boolean equals(Object)

Denne metoden brukes for å teste om to objekter har samme innhold, altså ikke nødvendigvis er identiske objekter, men oppfører seg likt. F.eks. vil to String-objekter med de samme bokstavene være like i denne forstand, mao. "Java".equals("Java") gir true uavhengig om de to "Java"-String'ene er == hverandre. Spesielt for verdi-aktige objekter som datoer, koordinat-par, komplekse tall er dette nyttig.

Les mer om dette på siden om equals-metoden.

int hashCode()

Denne metoden brukes for å gjøre søk blant mange objekter raskere i implementasjoner av sett-logikk, f.eks. java.util.HashMap og java.util.HashSet. Reglene for hashCode tett koblet til equals-metoden ved at dersom equals returnerer to true for to objekter, så skal deres hashCode-verdi være like. Det imidlertid lov at to objekter med like hashCode-verdier ikke er equals. Pga. denne tette koblingen er det anbefalt at en alltid (re)definerer hashCode hvis en redefinerer equals.