Mengonversi String ke Enum di Java

1. Perkenalan

Dalam artikel singkat ini, kita akan melihat bagaimana mengubah String menjadi enum di Java dengan cepat.

2. Penyiapan

Kami berurusan dengan inti Java jadi kami tidak perlu menambahkan artefak tambahan. Kami akan bekerja dengan PizzaDeliveryStatusEnum dari artikel panduan enum.

3. Konversi

Enum mirip dengan kelas Java standar, dan nilainya dapat diakses menggunakan notasi titik. Jadi untuk mengakses nilai READY dari PizzaDeliveryStatusEnum , kami akan melakukan:

PizzaStatusEnum readyStatus = PizzaStatusEnum.READY;

Ini bagus, tetapi bagaimana jika kita memiliki nilai status yang disimpan sebagai String , dan ingin mengubahnya menjadi PizzaStatusEnum ? Cara naif untuk melakukan ini adalah dengan menulis pernyataan sakelar raksasa yang mengembalikan nilai enum yang benar untuk setiap kemungkinan nilainya. Tetapi menulis dan memelihara kode tersebut adalah mimpi buruk dan harus dihindari dengan cara apa pun.

Di sisi lain, para enum jenis menyediakan valueOf () metode yang mengambil sebuah String sebagai argumen dan mengembalikan sesuai enum objek:

PizzaStatusEnum readyStatus = PizzaStatusEnum.valueOf("READY");

Kami dapat memeriksa bahwa pendekatan ini benar-benar berfungsi melalui pengujian unit:

@Test public void whenConvertedIntoEnum_thenGetsConvertedCorrectly() { String pizzaEnumValue = "READY"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf(pizzaEnumValue); assertTrue(pizzaStatusEnum == PizzaStatusEnum.READY); }

Penting untuk diingat bahwa metode valueOf () melakukan pencocokan case-sensitive dari argumen yang diberikan padanya, jadi meneruskan nilai yang tidak cocok dengan case dari salah satu nilai enum asli akan mengarah ke IllegalArgumentException :

@Test(expected = IllegalArgumentException.class) public void whenConvertedIntoEnum_thenThrowsException() { String pizzaEnumValue = "rEAdY"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf(pizzaEnumValue); } 

Meneruskan nilai yang bukan bagian dari nilai enum asli juga mengarah ke IllegalArgumentException :

@Test(expected = IllegalArgumentException.class) public void whenConvertedIntoEnum_thenThrowsException() { String pizzaEnumValue = "invalid"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf(pizzaEnumValue); }

4. Kesimpulan

Di artikel singkat ini, kami melihat cara mengubah String menjadi enum .

Sangat disarankan agar kita menggunakan metode valueOf () bawaan dari jenis enum , daripada melakukan konversi sendiri.

Seperti biasa, kode untuk artikel ini dapat ditemukan di GitHub.