toString() メソッドで文字列表現をカスタマイズする
name() メソッドは列挙型定数の正確な名前を提供しますが、列挙型が文字列としてどのように表示されるかをカスタマイズしたい場合もあります。このような場合に、toString() メソッドをオーバーライドすると便利です。
EnumToStringExample.java という名前の新しいファイルを作成しましょう。
public class EnumToStringExample {
// Define an enum with a custom string representation
enum Course {
JAVA("Java Programming"),
ANDROID("Android Development"),
HTML("HTML Basics"),
CSS("CSS Styling");
// Field to store the custom string description
private String courseName;
// Constructor to initialize the custom string
Course(String courseName) {
this.courseName = courseName;
}
// Override toString() to return the custom string
@Override
public String toString() {
return this.courseName;
}
}
public static void main(String[] args) {
System.out.println("Custom string representation using toString():");
// Print each course using the overridden toString() method
for (Course course : Course.values()) {
System.out.println(course.name() + " => " + course.toString());
}
// Direct use of toString() (happens automatically when printing an object)
Course myCourse = Course.ANDROID;
System.out.println("\nMy course is: " + myCourse);
// Comparing the two methods
System.out.println("\nComparison between name() and toString():");
System.out.println("name(): " + myCourse.name());
System.out.println("toString(): " + myCourse.toString());
}
}
このコードをコンパイルして実行しましょう。
cd ~/project/enum_examples
javac EnumToStringExample.java
java EnumToStringExample
次のような出力が表示されるはずです。
Custom string representation using toString():
JAVA => Java Programming
ANDROID => Android Development
HTML => HTML Basics
CSS => CSS Styling
My course is: Android Development
Comparison between name() and toString():
name(): ANDROID
toString(): Android Development
この例では、
- 文字列パラメータを受け取るコンストラクタを持つ列挙型を定義しました。
- 各列挙型定数はカスタム文字列の説明で初期化されます。
toString() メソッドをオーバーライドして、このカスタム文字列を返すようにしました。
- 列挙型を直接出力すると、Java は自動的に
toString() メソッドを呼び出します。
このアプローチにより、列挙型定数のよりユーザーフレンドリーまたは整形された文字列表現を提供することができます。これは、以下の場合に役立ちます。
- ユーザーインターフェイスで列挙型を表示する
- より読みやすいログメッセージを作成する
- 整形されたレポートを生成する
- アプリケーションを国際化する
name() メソッドは依然として元の定数名を返し、toString() はカスタム文字列を返すことに注意してください。