Suche…


Implementieren Sie die Methode equals ()

Um die equals Methode eines Objekts einfach zu implementieren, können Sie die EqualsBuilder Klasse verwenden.

Auswahl der Felder:

@Override
public boolean equals(Object obj) {

    if(!(obj instanceof MyClass)) {
        return false;
    }
    MyClass theOther = (MyClass) obj;
    
    EqualsBuilder builder = new EqualsBuilder();
    builder.append(field1, theOther.field1);
    builder.append(field2, theOther.field2);
    builder.append(field3, theOther.field3);
    
    return builder.isEquals();
}

Reflexion verwenden:

@Override
public boolean equals(Object obj) {
    return EqualsBuilder.reflectionEquals(this, obj, false);
}

Der boolesche Parameter gibt an, ob Gleiche transiente Felder prüfen sollen.

Reflexion verwenden, um einige Felder zu vermeiden:

@Override
public boolean equals(Object obj) {
    return EqualsBuilder.reflectionEquals(this, obj, "field1", "field2");
}

Implementieren Sie die hashCode () -Methode

Um die Umsetzung hashCode Methode eines Objekts leicht könnte man die Verwendung HashCodeBuilder Klasse.

Auswahl der Felder:

@Override
public int hashCode() {
    
    HashCodeBuilder builder = new HashCodeBuilder();
    builder.append(field1);
    builder.append(field2);
    builder.append(field3);
    
    return builder.hashCode();
}

Reflexion verwenden:

@Override
public int hashCode() {
    return HashCodeBuilder.reflectionHashCode(this, false);
}

Der boolesche Parameter gibt an, ob transiente Felder verwendet werden sollen.

Reflexion verwenden, um einige Felder zu vermeiden:

@Override
public int hashCode() {
    return HashCodeBuilder.reflectionHashCode(this, "field1", "field2");
}

Implementieren Sie die toString () -Methode

Um die toString Methode eines Objekts einfach zu implementieren, können Sie die ToStringBuilder Klasse verwenden.

Auswahl der Felder:

@Override
public String toString() {

    ToStringBuilder builder = new ToStringBuilder(this);
    builder.append(field1);
    builder.append(field2);
    builder.append(field3);
    
    return builder.toString();
}

Beispielergebnis:

[email protected][<null>,0,false]

Explizite Benennung der Felder:

@Override
public String toString() {

    ToStringBuilder builder = new ToStringBuilder(this);
    builder.append("field1",field1);
    builder.append("field2",field2);
    builder.append("field3",field3);
    
    return builder.toString();
}

Beispielergebnis:

[email protected][field1=<null>,field2=0,field3=false]

Sie können den Stil über Parameter ändern:

@Override
public String toString() {

    ToStringBuilder builder = new ToStringBuilder(this,
            ToStringStyle.MULTI_LINE_STYLE);
    builder.append("field1", field1);
    builder.append("field2", field2);
    builder.append("field3", field3);

    return builder.toString();
}

Beispielergebnis:

[email protected][
  field1=<null>
  field2=0
  field3=false
]

Es gibt einige Stile, z. B. JSON, keinen Klassennamen, Kurzzeichen usw.

Über Reflexion:

@Override
public String toString() {
    return ToStringBuilder.reflectionToString(this);
}

Sie können auch den Stil angeben:

@Override
public String toString() {
    return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow