Hirdetés

Keresés

Új hozzászólás Aktív témák

  • TBG
    senior tag

    Sosem szabad csak az equals()-t vagy csak a hashCode()-ot felülírni! Nyilván képes lesz működni, ha csak az egyik van felülírva, de mihelyst az objektum fel lesz használva kulcsként (dictionary, set), máris hibás működést kaphatunk! Emellett azt is figyelembe kell venni, hogy az alaplogikának egyeznie kell a két metódusban, különben szintén hibás működést kaphatunk (pl. mikor egy set-hez akarnánk hozzáadni végtelen ciklusba is kerülhetünk). Sőt, igazából ilyen kulcsként való felhasználás esetén csak immutable objektumokat szabadna használni.

    Nyilván az nem derült ki, hogy a kolléga mire akarja használni. És igenis, lehet az, hogy csak az egyiket írom felül. Ha egy listába rakom és csak a contains() metódust hivogatom rá, akkor bőven elég az equals() metódust felüldefiniálni.

    Nem véletlenül írtam, hogy alternatív megoldás és nem az üdvözítő.

Új hozzászólás Aktív témák