Object.toString

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