Java クラスにtoStringメソッドを追加する意味とサンプル

JavaのクラスにtoStringメソッドを追加する意味の説明とそのコードのサンプルです。

確認環境
・Java 8
・eclipse 4.8

目次

toStringメソッド

public String toString()
  • Objectクラスのメソッドです。
  • オブジェクトの文字列表現を返します。
  • 全てのクラスはObjectクラスを継承しています。そのため、作成したクラスにtoStringメソッドを追加するとオーバーライドになります。
  • 以下は、OracleのJava8のtoStringメソッドのリンクです。
    https://docs.oracle.com/javase/jp/8/docs/api/java/lang/Object.html#toString--

サンプルのクラス

以下のクラスにtoStringメソッドを追加し、オブジェクトの内部の値を返すようにします。(Productクラス)

package test1;

public class Product {
    private String name;
    private int price;
    
	public Product(String name, int price) {
		this.name = name;
		this.price = price;
	}
}

 

EclipseでtoStringメソッドを追加する

EclipseでtoStringメソッドを追加できます。

1.ソースコード上で、右クリックして、「ソース」→「toString()生成」をクリックします。

 

2.フィールドのnameとpriceにチェックを入れます。
「挿入ポイント」はProduct(String,int)の後を選びます。完了後「生成」ボタンを押します。

 

3.コード上に、toStringメソッドが自動で生成されました。

package test1;

public class Product {
    private String name;
    private int price;
    
	public Product(String name, int price) {
		this.name = name;
		this.price = price;
	}

	@Override
	public String toString() {
		return "Product [name=" + name + ", price=" + price + "]";
	}
}

 

toStringメソッドの意味を確認する

追加したtoStringメソッドを試すため新たにクラスを作成します。(Test1クラスを作成)

package test1;

public class Test1 {
    public static void main(String[] args) {
    	
    	Product p1 = new Product("りんご",300);
     
    	System.out.println(p1);
    	//Product [name=りんご, price=300]
    }
 }

8行目は、オブジェクトに設定した値が表示されます。

8行目のprintlnメソッドは、引数がオブジェクトの場合、obj.toString()の値を返します。(※)
そのため上記クラスでオーバーライドしたtoStringのメソッドが実行されました。
このようにオブジェクトの値を簡単に確認できるようになります。デバッグで使えます。

上記クラス(Productクラス)でtoStringメソッドを記述しなかった場合は、test1.Product@27d6c5e0のような値が出力されます。

※printlnメソッドでString.valueOf(x)を呼び出しています。String.valueOf(x)は、引数(x)がオブジェクトの場合、obj.toString()の値を返します。

https://docs.oracle.com/javase/jp/8/docs/api/java/io/PrintStream.html#print-java.lang.Object-
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#valueOf-java.lang.Object-

関連の記事

Eclipse getterとsetterを自動で作成する方法
Java オーバーライドのサンプル

△上に戻る