Java で Enum を列挙型に変換する

Rupam Yadav 2023年10月12日
  1. Java で name() を使って Enum 型を文字列に変換する
  2. Java の toString() を用いた列挙型から文字列への変換
Java で Enum を列挙型に変換する

Java の enum は、定数のセットを保持する特殊なデータ型またはクラスです。enum にもコンストラクタやメソッドを追加することができます。Java で列挙型を作成するには、キーワード enum を使い、クラスと同じように名前を付けます。この記事では、Java で列挙型を文字列に変換する方法を見ていきましょう。

Java で name() を使って Enum 型を文字列に変換する

最初の例では、Enum クラスの name() を用いて、列挙型定数の正確な名前を文字列として返します。以下ではクラスの内部で列挙型を作成しましたが、Enum 型はクラスの外部でも内部でも作成することができます。ここでは、方向の名前を含む列挙型定数を Directions と名付けた。

定数は name() メソッドを使って取得することができます。Directions.WEST.name()WEST を文字列として返し、それを文字列変数 getWestInString に格納し、出力に出力します。

public class EnumToString {
  enum Directions { NORTH, SOUTH, EAST, WEST }

  public static void main(String[] args) {
    String getWestInString = Directions.WEST.name();
    System.out.println(getWestInString);
  }
}

出力:

WEST

Java の toString() を用いた列挙型から文字列への変換

name() と同様に toString() メソッドもありますが、重要な目的で列挙型定数を使用する場合は name() の方が同じ定数を返すので好ましいですが、toString() は列挙型の中でオーバーライドできるので、toString() の方が好ましいです。これは、次の例で説明するように、toString() を使用して文字列として返されるものを変更できることを意味します。

この例では、文字列に変換する必要のある定数に対して toString() メソッドを使用します。

public class EnumToString {
  enum Currencies { USD, YEN, EUR, INR }

  public static void main(String[] args) {
    String getCurrency = Currencies.USD.toString();
    System.out.println(getCurrency);
  }
}

出力:

USD

メソッドをオーバーライドして、列挙型定数で文字列として返したいものを変更できることは上で説明しました。以下の例では、引数に文字列を渡して enum コンストラクタを呼び出す定数として 4つの通貨を用意しています。

定数が toString() メソッドを見るたびに、文字列変数 getCurrencyName に文字列名を渡します。ここで、列挙型の中の toString() メソッドをオーバーライドして getCurrencyName を文字列で返す必要があります。

main() メソッドでは toString() を使用して INR 定数を文字列として取得しています。出力を見ると、変更された文字列が出力されていることがわかります。また、Enum.values() を使用すると、列挙型定数の配列を返し、すべての定数をループして文字列として出力することができます。

public class EnumToString {
  enum Currencies {
    USD("USD"),
    YEN("YEN"),
    EUR("EUR"),
    INR("INR");

    private final String getCurrencyName;

    Currencies(String currencyName) {
      getCurrencyName = currencyName;
    }

    @Override
    public String toString() {
      return "Currency: " + getCurrencyName;
    }
  }

  public static void main(String[] args) {
    String getCurrency = Currencies.INR.toString();
    System.out.println("Your " + getCurrency);

    Currencies[] allCurrencies = Currencies.values();
    for (Currencies currencies : allCurrencies) {
      System.out.println("All " + currencies);
    }
  }
}

出力:

Your Currency: INR
All Currency: USD
All Currency: YEN
All Currency: EUR
All Currency: INR
著者: Rupam Yadav
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

関連記事 - Java String

関連記事 - Java Enum