toStringは、すべてのオブジェクトに用意されているもので、オブジェクトの文字列表現を返す。
Object (Java Platform SE 7)
Java クラスにtoStringメソッドを追加する意味とサンプル | ITSakura
デフォルトのものを使ってもいいが、どうやってオーバーライドしていくかというのもちょっとやってみる。
CustomObject.javaで、
// カスタムオブジェクト class CustomObject { // Objectの派生クラスCustomObject // 最初は何も定義しない. }
何も定義しない。
MainClass.javaで、
//メインクラス class MainClass { // MainClassクラスの定義 // Javaのエントリポイント public static void main(String[] args) { // mainメソッドの定義 // CustomObjectの生成. CustomObject obj = new CustomObject(); // CustomObjectオブジェクトobjを生成. // obj.toStringを出力. System.out.println("obj.toString() = " + obj.toString()); // obj.toString()を出力. } }
そのままtoString。
obj.toString() = CustomObject@659e0bfd
デフォルト動作は、クラス名とオブジェクトのハッシュコード。
// カスタムオブジェクト class CustomObject { // Objectの派生クラスCustomObject // フィールド String str; // Stringクラスフィールドstr. // メソッド public void setStr(String str) { // StrをセットするメソッドsetStr. this.str = str; // メンバに引数をセット. } @Override public String toString(){ // オーバーライドメソッドtoString. return str; // シンプルにstrを返す. } }
文字列をセットできるようにし、その文字列をtoStringで返すようにした。
//メインクラス class MainClass { // MainClassクラスの定義 // Javaのエントリポイント public static void main(String[] args) { // mainメソッドの定義 // CustomObjectの生成. CustomObject obj = new CustomObject(); // CustomObjectオブジェクトobjを生成. // 文字列をセット. obj.setStr("ABC"); // obj.setStrで"ABC"をセット. // obj.toStringを出力. System.out.println("obj.toString() = " + obj.toString()); // obj.toString()を出力. } }
"ABC"をセットすると、
obj.toString() = ABC
シンプルに"ABC"が返ってくる。
メンバが1つなら、これでもいいけど、2つ以上の場合はどうだろうか。
整数値もセットできるようにした。
toStringは、大括弧を使って、それぞれのフィールドの値を出力するようにした。
ちょっとJSONっぽい感じ・・・。
数値もセットするようにして、
obj.toString() = CustomObject[str = ABC, value = 123]
こんな感じに出力されるようになった。
Sample/java/Object/toString/src/Object at master · bg1bgst333/Sample · GitHub