メソッド toString()
メニューを表示するにはスワイプしてください
オブジェクトを簡単に出力する方法
Javaで System.out.println(object); コマンドを使用してオブジェクトのすべてのデータを表示するには、toString(); というメソッドがある。
toString()
Javaの toString メソッドは、Object クラスに属する組み込みメソッド。オブジェクトの文字列表現を返すために使用される。デフォルトでは、オブジェクトで toString を呼び出すと、クラス名 と ハッシュコード が含まれる文字列が返される。
例を見てみよう:
Main.java
1234567891011121314151617181920package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } }
ハッシュコード
ハッシュコード とは、簡単に言うと、メモリ上に格納されているオブジェクトの一意の識別子。オブジェクトに対して hashCode() メソッドを呼び出すことで、ハッシュコードを確認することもできる。例:
Main.java
123456789101112131415161718192021package com.example; class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } } public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); int code = bob.hashCode(); System.out.println(code); } }
この場合、疑問が生じます:オブジェクトのハッシュコードの代わりに、より具体的な情報を取得するにはどうすればよいでしょうか?そのような場合には、toString() メソッドをオーバーライドすることができます。
継承やメソッドのオーバーライドは広範なトピックであり、別のコースで学習します。現時点では、toString() メソッドに対してのみメソッドのオーバーライドを使用します。
toString() の使い方
メソッドをオーバーライドするには、次の構文を使用します:
Main.java
1234@Override public String toString() { // block of code }
このメソッドの前にアノテーション @Override を使用。アノテーションにより、コンパイラはこのメソッドがオーバーライドされていることを認識。次に、public String toString() という構文を指定し、どのメソッドをオーバーライドするかを明示。
このメソッドの本体では、オブジェクトを文字列としてどのように表現するかを定義。Person クラスのメソッドをオーバーライドする例:
Person.java
12345678910111213141516171819class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }
System.lineSeparator() コマンドは改行を作成するために使用。
文字列とその値を連結することで、オブジェクトの表示方法を定義。したがって、Person クラスのオブジェクトを出力しようとすると、各フィールドの詳細情報が表示。
main メソッドを使ってオブジェクトを出力し、どのように表示されるかを確認:
Main.java
12345678910111213141516171819202122232425262728package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "."; } }
オブジェクト bob が属するクラスの情報と、そのすべてのフィールドの詳細を取得しました。
このように、オブジェクトを出力する際に希望する情報を表示できるよう、toString() メソッドをオーバーライドして定義できます。コンストラクタを使ってこのクラスの別のオブジェクトを作成し、toString() メソッドがオブジェクトをどのように変換するかを確認しましょう。
Main.java
123456789101112131415161718192021222324252627282930package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob", 20, "male"); System.out.println(bob); Person alice = new Person("Alice", 17, "female"); System.out.println(alice); } } class Person { String name; int age; String gender; public Person(String name, int age, String gender) { this.name = name; this.age = age; this.gender = gender; } @Override public String toString() { return "Class Person;" + System.lineSeparator() + "name = " + name + ";" + System.lineSeparator() + "age = " + age + ";" + System.lineSeparator() + "gender = " + gender + "." + System.lineSeparator(); } }
新しいオブジェクト alice がコンソールに同じテンプレートで表示されていることが確認できます。
結論
toString() メソッドを使用することで、オブジェクト情報の画面表示が大幅に簡素化され、mainメソッド内のスペースを節約できます。
1. なぜ toString() メソッドが必要なのですか?
2. toString() メソッドの上に付けるべきアノテーションはどれですか?
フィードバックありがとうございます!
AIに質問する
AIに質問する
何でも質問するか、提案された質問の1つを試してチャットを始めてください