hashCode implementierung

Edward

Mitglied
Hallo,

wie kann man einen adäquaten hashCode bei einer Klasse implementieren, die ohne Integer Werte auskommt? Mein Problem ist, dass ich vorher nur mit Klassen arbeitete, welche Zahlen hatten (Die man dann benutzen konnte um einen einzigartigen hashCode zu generieren, z.B. Koordinatenpunkte).
In folgender Klasse ist das einzige Merkmal jedoch ein String. Wie kann man einen passenden hashCode implementieren?


Code:
public class Farbe {

   String farbe;
  
   public Farbe(String pFarbe){
      
      
       this.farbe = pFarbe;
      
       IO.writeln("Die Farbe ist: " + farbe);
   }
  
   @Override
   public boolean equals(Object obj){
       if( this == obj) return true;
       if (obj == null) return false;
       if(getClass() != obj.getClass()) return false;
      
       Farbe other = (Farbe) obj;
       if(other.farbe ==farbe)
           return true;
       else
           return false;
      
      
   }
}
 
Normalerweise hilft dir die IDE beim erstellen eines hashCodes. Was du machen kannst ist java.util.Objects einbinden und die macht das dann für dich (IntelliJ macht das auch so):
Java:
class Farbe {
  private String farbe;

  public Farbe(String farbe) {
    this.farbe = farbe;
  }

  @Override
  public boolean equals(Object o) {
    if (this == o) return true;
    if (!(o instanceof Farbe)) return false;
    Farbe farbe1 = (Farbe) o;
    return Objects.equals(farbe, farbe1.farbe);
  }

  @Override
  public int hashCode() {
    return Objects.hash(farbe);
  }
}
 
Was auch möglich ist:
Java:
@Override
public int hashCode() {
  return farbe.hashCode();
}
 

Neue Themen


Zurück
Oben