Java Language
Apache Commons Lang
サーチ…
equals()メソッドを実装する
オブジェクトのequals
メソッドを簡単に実装するにequals
、 EqualsBuilder
クラスを使用します。
フィールドの選択:
@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();
}
反射を使用する:
@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj, false);
}
booleanパラメータは、equalsが一時フィールドをチェックする必要があるかどうかを示します。
反射を使用していくつかのフィールドを避ける:
@Override
public boolean equals(Object obj) {
return EqualsBuilder.reflectionEquals(this, obj, "field1", "field2");
}
hashCode()メソッドを実装する
オブジェクトのhashCode
メソッドを簡単に実装するには、 HashCodeBuilder
クラスを使用できます。
フィールドの選択:
@Override
public int hashCode() {
HashCodeBuilder builder = new HashCodeBuilder();
builder.append(field1);
builder.append(field2);
builder.append(field3);
return builder.hashCode();
}
反射を使用する:
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this, false);
}
booleanパラメータは、一時フィールドを使用する必要があるかどうかを示します。
反射を使用していくつかのフィールドを避ける:
@Override
public int hashCode() {
return HashCodeBuilder.reflectionHashCode(this, "field1", "field2");
}
toString()メソッドを実装する
オブジェクトのtoString
メソッドを簡単に実装するには、 ToStringBuilder
クラスを使用できます。
フィールドの選択:
@Override
public String toString() {
ToStringBuilder builder = new ToStringBuilder(this);
builder.append(field1);
builder.append(field2);
builder.append(field3);
return builder.toString();
}
結果の例:
ar.com.jonat.lang.MyClass@dd7123[<null>,0,false]
明示的にフィールドに名前を付ける:
@Override
public String toString() {
ToStringBuilder builder = new ToStringBuilder(this);
builder.append("field1",field1);
builder.append("field2",field2);
builder.append("field3",field3);
return builder.toString();
}
結果の例:
ar.com.jonat.lang.MyClass@dd7404[field1=<null>,field2=0,field3=false]
パラメータを使ってスタイルを変更することができます:
@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();
}
結果の例:
ar.com.bna.lang.MyClass@ebbf5c[
field1=<null>
field2=0
field3=false
]
JSON、Classname、shortなどのスタイルがいくつかあります。
反射を介して:
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this);
}
あなたはスタイルを示すこともできます:
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow