JavaのクラスにtoStringメソッドを追加する意味とそのコードのサンプルです。
確認環境 ・eclipse 4.8 |
目次
サンプル | toStringメソッドとは |
確認の手順1:クラスにtoStringメソッドを追加する | |
確認の手順2:toStringメソッドを使用する |
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メソッドを追加する
Eclipseの機能で以下のクラスにtoStringメソッドを追加し、オブジェクトの内部の値を返すようにします。
package test1;
public class Product {
private String name;
private int price;
public Product(String name, int price) {
this.name = name;
this.price = price;
}
}
手順1.ソースコード上で、右クリックして、「ソース」→「toString()生成」をクリックします。
2.「フィールド」のnameとpriceにチェックを入れます。
「挿入ポイント」はProduct(String,int)の後を選びます。完了後「生成」ボタンを押します。
3.コード上に、toStringメソッドが自動で生成されました。オーバーライド(@Override)のアノテーションがついています。
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.toString());
//Product [name=りんご, price=300]
System.out.println(p1);
//Product [name=りんご, price=300]
}
}
6行目は、インスタンスを生成しています。コンストラクタで文字列と数値を渡しています。
8行目は、9行目の文字列を表示します。これは上記コードの13行目のtoStringメソッドが実行されるからです。
11行目のprintlnメソッドの引数は、4行目の変数ですが同じように文字列を出力します。
文字列を表示する過程でtoStringメソッドが呼び出されるためです。
printlnメソッドは、最初にString.valueOf(x)を呼び出して文字列の値を取得します。
String.valueOf(x)は、obj.toString()の値を返します。
そのときに、上記のProductクラスでオーバーライドしたtoStringのメソッドが実行されます。
上記コードの13行目のtoStringメソッドがない場合は、8,11行目ともtest1.Product@16b98e56のような文字列が出力されます。
https://docs.oracle.com/javase/jp/8/docs/api/java/io/PrintStream.html#println-java.lang.Object-https://docs.oracle.com/javase/jp/8/docs/api/java/lang/String.html#valueOf-java.lang.Object-
関連の記事