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-
関連の記事