JavaのtoString()メソッドをオーバーライドする目的とは?意味と実装例を解説
JavaにおけるtoString()メソッドとは、どのような役割を持つメソッドなのでしょうか?
toString()は、クラスのオブジェクトを文字列(String)として表現したい場合に使用するメソッドです。このメソッドを呼び出すと、オブジェクトの内容をテキスト形式で返してくれます。
実は、オブジェクトをSystem.out.println()などで出力するとき、Javaコンパイラは自動的にそのオブジェクトのtoString()メソッドを呼び出します。つまり、toString()を適切にオーバーライドしておけば、オブジェクトの中身がわかりやすい形で出力されるようになります。
それでは、具体的なコード例を見ていきましょう。
toString()メソッドのオーバーライド例
package io.devqa.tutorials;
public class ToStringExample {
private String firstName;
private String lastName;
private String email;
public ToStringExample() {
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append("First name : ").append(this.firstName).append("\n");
sb.append("Last name : ").append(this.lastName).append("\n");
sb.append("Email : ").append(this.email).append("\n");
return sb.toString();
}
public static void main(String args[]) {
ToStringExample example = new ToStringExample();
example.setFirstName("Testing");
example.setLastName("Tester");
example.setEmail("testing@tester.com");
System.out.println(example);
}
}
上記のコードを実行すると、次のような出力が得られます。
First name : Testing
Last name : Tester
Email : testing@tester.com
一方、もしtoString()メソッドをオーバーライドしていなかった場合、出力は以下のようになります。
io.devqa.tutorials.ToStringExample@60e53b93
これは、Objectクラスにデフォルトで定義されているtoString()の出力形式で、「クラス名+@+ハッシュコード」を表しています。このままでは、オブジェクトにどんなデータが入っているのかまったくわかりません。
このように、toString()メソッドをオーバーライドすることで、オブジェクトの持つフィールドの値を人間が読みやすい形で出力できるようになります。デバッグやログ出力の際に非常に便利なため、実務でも積極的に活用される重要なテクニックです。
-
JavaのString intern()メソッドとは?その役割と使い方をわかりやすく解説
JavaにおけるStringクラスの基本Stringは、Javaで一連の文字(文字列)を格納するためのクラスで、java.langパッケージに属しています。Stringオブジェクトは一度生成すると内容を変更できない「イミュータブル(不変)」という特性を持っています。文字列の保存場所すべてのStringオブジェクトは、ヒープ領域内にある「文字列定数プール(String Constant Pool)」と呼ばれる専用のメモリ領域に格納されます。文字列リテラルを定義するたびに、JVMは文字列定数プール内にその値を持つStringオブジェクトを生成します。そのため、同じ内容の文字列リテラルが複数存在して
-
Javaのメソッドオーバーライドとは?仕組みとサンプルコードを解説
オーバーライドとはオーバーライド(Override)とは、サブクラスが親クラスから継承したメソッドを、自身の要件に合わせて再定義できる機能です。これにより、サブクラスはその型に固有の振る舞いを実装することができます。オブジェクト指向の観点で言えば、オーバーライドとは「既存のメソッドの機能を上書きする」ことを意味します。オーバーライドの例具体的な例を見てみましょう。以下のコードでは、Animal クラスの move() メソッドを、Dog クラスがオーバーライドしています。class Animal { public void move() {&nbs