IntelliJ IDEAでtoString()が未実装のクラスに対して、toString()を追加する方法を紹介します。
その前になぜtoString()メソッドを実装した方をいいかというと。例えば、このような実装があった場合、
if (debug.messageEnabled()) {
debug.message("LoginState : " + loginState);
}
toString()が実装されていないと、
LoginState : com.sun.identity.authentication.service.LoginState@3f184740
というように役に立たないログが出力されてしまいます。これでは、デバッグ時に参考にならないので、このクラスのフィールドの情報が出力されるようにtoString()を実装します。しかし、手入力の場合は実装漏れや誤りがあるので、自動生成した方が正確かつ簡単です。
対象のクラスを選択した状態で、Code > Generate をクリックし、その中にあるtoString選択します。
以下のようなtoString()が追加されます。
@Override
public String toString() {
return "LoginState{" +
"orgName='" + orgName + '\'' +
", receivedCallbackInfo=" + Arrays.toString(receivedCallbackInfo) +
", prevCallback=" + Arrays.toString(prevCallback) +
", submittedCallbackInfo=" + Arrays.toString(submittedCallbackInfo) +
", callbacksPerState=" + callbacksPerState +
...
", loginStatus=" + loginStatus +
", modulesInSession=" + modulesInSession +
'}';
}
上のソースコードから分かるように配列の場合は、Arrays.toString()で各要素を表示してくれたり、文字列の場合はシングルクォートで囲んでくれたりするようです。
自動生成は、toString()以外にもgetter/setterやコピーライトなどいろいろとあります。