スティーブとドンの答えに追加するには(それらの場合は+1):
toString()
メソッドを単純にし、期待値をトリガーしないようにします(特に、nullになる可能性のあるフィールドに注意してください)。
可能であれば、クラスの他のメソッドを呼び出さないでください。少なくとも、toString()
メソッドがオブジェクトを変更しないようにしてください。
そして、ばかげた例外-toStringループに注意してください:
public class MyClass {
...
public String toString() {
// BAD PRACTICE 1: this can throw NPE - just use field1
return " field1=" + field1.toString()
+ " extraData=" + getExtraData();
// BAD PRACTICE 2: potential exception-toString loop
}
public MyExtraData getExtraData() {
try {
.... do something
} catch(Exception e) {
throw new RuntimeException("error getting extradata - " + this.toString(),e);
}
}
}