Effective Java-すべてのオブジェクトの共通メソッド(3):常にtoStringを再定義する
toStringは常に再定義されます
よく知られているように、Objectの基本的なtoStringメソッドは、私たちが作成したクラスに適した文字列を返すことはめったにありません.は、클래스_이름@16진수로_표시한_해시코드
を返します.
TOStringは一般的に、簡潔で読みやすい形式の有益な情報を返すことを約束している.
toString()メソッドは、println、printf、文字列接続演算子(+)、assert構文、またはデバッガ出力オブジェクトの場合に自動的に呼び出されます.
作成したオブジェクトの構成部品レコードエラーメッセージを参照すると、自動的に呼び出すこともできます.正しく定義されていない場合は、無駄なメッセージですが、ログに残ります.// 쓸모없는 형태의 예
System.out.pinrtln(phoneNumber + "에 연결할 수 없습니다."
良いtoString(コレクションなど)は、このインスタンスを含むオブジェクトで非常に役立ちます.したがって、オブジェクトが所有するすべてのプライマリ情報を返すことが望ましい.
オブジェクトが巨大な場合、またはオブジェクトの状態が文字列で表すのに適していない場合は、どうすればいいですか?この場合、自分を完全に説明する文字列を返しましょう.맨해튼 거주자 전화번호부(총 1564752개) 같은..
Assertion.failure : expected {abc, 123}, but was {abc, 123}.
// 잘못 작성한 경우 -> 예상값과 실패값이 같아져버림
フォーマットおよび宣言にかかわらず、toString戻り値に含まれる情報を取得するためにAPIを提供することができる。
たとえば、PhoneNumberクラスは、地域コード、Prepix、およびユーザー番号にアクセス者を指定する必要があります.そうでなければ、この情報を必要とするプログラマは、toStringの戻り値のみをグループ化できます.これはパフォーマンスに影響し、将来フォーマットを変更するとシステムがクラッシュする可能性があります.
静的ユーティリティクラスではtoStringは必要ありません。
多くの列挙タイプのJavaも完璧なtoStringを提供しています.ただし、サブクラスに共有する文字列で表す抽象クラスがある場合は、toStringを定義する必要があります.たとえば、ほとんどの集合インプリメンテーションは抽象集合クラスのtoStringを継承します.
Reference
この問題について(Effective Java-すべてのオブジェクトの共通メソッド(3):常にtoStringを再定義する), 我々は、より多くの情報をここで見つけました
https://velog.io/@shinmj1207/Effective-Java-모든-객체의-공통-메서드3-toString을-항상-재정의히라
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
// 쓸모없는 형태의 예
System.out.pinrtln(phoneNumber + "에 연결할 수 없습니다."
Assertion.failure : expected {abc, 123}, but was {abc, 123}.
// 잘못 작성한 경우 -> 예상값과 실패값이 같아져버림
Reference
この問題について(Effective Java-すべてのオブジェクトの共通メソッド(3):常にtoStringを再定義する), 我々は、より多くの情報をここで見つけました https://velog.io/@shinmj1207/Effective-Java-모든-객체의-공통-메서드3-toString을-항상-재정의히라テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol