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--

確認1:クラスにtoStringメソッドを追加する

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

package test1;

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

 

2.Eclipseの機能でtoStringメソッドを追加します。
ソースコード上で、右クリックして、「ソース」→「toString()生成」をクリックします。

 

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

 

4.コード上に、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 + "]";
	}
}

 

確認2:toStringメソッドを使用する

上記で作成したクラスのtoStringメソッドを試すため新たにクラスを作成します。

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行目のprintlnメソッドの文字を出力する過程でtoStringメソッドが使用されオブジェクトに設定した値が表示されます。

1.println(Object x)とは

public void println(Object x)

このメソッドは引数がObjectである場合、最初にString.valueOf(x)を呼び出して文字列の値を取得します。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/PrintStream.html#println-java.lang.Object-

2.String.valueOf(x)とは

public static String valueOf(Object obj)

String.valueOf(x)は、obj.toString()の値を返します。
https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#valueOf-java.lang.Object-

3.その結果

上記ProductクラスでオーバーライドしたtoStringのメソッドが実行されます。
このようにオブジェクトの値を簡単に確認できるようになります。デバッグ等で使います。

4.ProductクラスでtoStringメソッドを記述しなかった場合

test1.Product@27d6c5e0のような値が出力されます。

関連の記事

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

△上に戻る