public class MyObject {
@Override
public String toString() {
return "This is a MyObject";
}
public static void main(String[] args) {
MyObject myObject = new MyObject();
System.out.println(myObject); // This is a MyObject
}
}この例では、MyObjectクラスがObjectクラスのtoStringメソッドをオーバーライドし、適切な文字列を返しています。mainメソッドでは、System.out.println(myObject)を呼び出すことで、toStringメソッドが自動的に呼ばれて、「This is a MyObject」という文字列が表示されます。
Objectクラスの継承
Javaにおいて、すべてのクラスはObjectクラスを直接または間接的に継承しています。ObjectクラスはJavaのクラス階層の最上位に位置し、以下のようなメソッドを提供しています。
- toString(): オブジェクトの文字列表現を返します。通常、クラスごとにこのメソッドをオーバーライドして、オブジェクトの意味のある文字列表現を提供します。
- equals(Object obj): 他のオブジェクトと等しいかどうかを判定します。通常、このメソッドもクラスごとにオーバーライドされます。
- hashCode(): オブジェクトのハッシュコードを返します。ハッシュコードは、ハッシュテーブルなどでオブジェクトを管理するために使用されます。
- getClass(): オブジェクトのクラスを返します。
- clone(): オブジェクトのコピーを作成します。
- finalize(): オブジェクトがガベージコレクションされる際に呼び出されるメソッドです。ただし、非推奨となっており、代わりに
AutoCloseableやtry-with-resourcesを使用することが推奨されています。
これらのメソッドは、Javaのクラスが特定の動作をするために利用されます。特に、toStringメソッドはデバッグやログ出力などで頻繁に使用され、クラスごとに適切な文字列表現を提供することが重要です。
toStringメソッド
toStringメソッドは、JavaのObjectクラスに定義されているメソッドの一つであり、オブジェクトの文字列表現を返す役割を果たします。このメソッドは、主にデバッグやログ出力などで使用され、オブジェクトの内容を人が理解しやすい形式で表示するためにオーバーライドされます。
toStringメソッドは以下のように定義されています:
public String toString() {
// オブジェクトの文字列表現を構築して返す
}デフォルトのObjectクラスの実装では、クラス名とオブジェクトのハッシュコードの16進数表現が返されますが、通常はこれをクラスごとにオーバーライドして、より意味のある情報を提供します。
例えば、以下はPersonクラスでtoStringメソッドをオーバーライドする例です:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public String toString() {
return "Person{name='" + name + "', age=" + age + '}';
}
}System.out.println メソッドは、引数として与えられたオブジェクトの toString メソッドの結果を出力します。これは、Java言語の標準的な出力手段です。
具体的には、System.out.println がオブジェクトを表示しようとすると、対象のオブジェクトの toString メソッドが呼び出されます。デフォルトの Object クラスでは、toString メソッドはオブジェクトのクラス名とハッシュコードの16進数表現を返しますが、クラスが toString メソッドをオーバーライドしている場合は、その実装が使われます。
上記のPersonクラスの例では、オーバーライドされたtoStringメソッドを使用すると、System.out.println(person)などで直感的な表示が得られます。このメソッドを適切に実装することで、コードのデバッグやログ出力がより効果的に行えるようになります。


