|
||||||||||||||||||||||||||
| 前のページ 1 2 3 4 次のページ | ||||||||||||||||||||||||||
| 可能な限りtoString()メソッドを実装する(C_IHT005) | ||||||||||||||||||||||||||
|
toString()メソッドは、オブジェクトの文字列表現を返します。このメソッドは、デバッグ作業を行う上で有用な情報を提供します。 迅速なデバッグを実現するために、クラスを作成する際には可能な限りtoString()メソッドを定義するべきです。toString()メソッドでは、オブジェクトの状態を適切なレベルで文字列として表現する必要があります。 toString()メソッドを定義しない場合、ObjectクラスのtoString()メソッドが継承されます。このメソッドは対象オブジェクトの"完全限定名@ハッシュコード値の16進数表現"を返します。多くの場合、この戻り値ではデバッグするのに十分な情報とはいえません。 また各クラスで定義すべきtoString()メソッドは、出力すべきフィールド名が変わるだけで、大部分のコードは重複します。フィールドの変更があった場合はtoString()メソッドも修正する必要があり、変更に手間がかかります。 そのためtoString()メソッドの作成には工夫の余地があります。例えば「Commonclipseプラグイン」の利用によるtoString()メソッドの自動生成(注3)や、リフレクション機能を利用し、オブジェクトのすべてのフィールドを出力するユーティリティメソッドを作成する(注4)ことなどが考えられます。
※注3:
開発環境としてEclipseを利用しているならば、Commonclipseプラグインの利用をお勧めします。このプラグインにより、下記のObjectクラスのメソッドを自動で再定義してくれます。
toString()、hashCode()、equals(Object)、compareTo(Object)
※注4:
リフレクションによるtoString()メソッドの実装方法は、下記の書籍で詳述されています。「Java魂 -プログラミングを極める巧みの技」 このような工夫によって、toString()メソッドの作成の省力化がはかれるとともに、コピー&ペーストによる問題を解決することができます。 |
||||||||||||||||||||||||||
| インスタンス | ||||||||||||||||||||||||||
|
インスタンス同士を比較する方法は様々ありますが、各々の状況によって使うべきメソッドがあります。インスタンス同士の比較する際の状況、メソッドの意味を理解して使い分けてください。 |
||||||||||||||||||||||||||
| オブジェクトどうしはequals()メソッドで比較する(C_IST001) | ||||||||||||||||||||||||||
|
「オブジェクトの内容が等しい」ことを判定するには、equals()メソッドを利用します。"=="による比較は、「オブジェクト参照が同一のオブジェクトかどうか」を判定します。双方の違いを理解して状況に応じて使い分ける必要があります。この理解が不十分であることからバグの原因となる場合があります。 Stringクラスを利用したサンプルプログラムをみます。 Stringの比較 |
||||||||||||||||||||||||||
String a = new String("hoge");
|
||||||||||||||||||||||||||
1、2はそれぞれ次の比較を意味しています。
表2:比較の方法
オブジェクトの比較を行う際には、1、2どちらの比較が適切かを考慮すべきです。また2を利用する場合、当該クラスのequals()メソッドは「オブジェクトが等しいという条件」を理解した上で利用すべきです。 |
||||||||||||||||||||||||||
|
前のページ 1 2 3 4 次のページ |
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||
|
||||||||||||||||||||||||||

