1. Pengenalan
Dalam artikel pendek ini, kita akan melihat cara mengubah String menjadi enum di Java dengan cepat.
2. Persediaan
Kami berurusan dengan Java inti jadi kami tidak perlu menambahkan artifak tambahan. Kami akan bekerjasama dengan PizzaDeliveryStatusEnum dari artikel panduan enums.
3. Penukaran
Jumlahnya serupa dengan kelas Java standard, dan nilainya dapat diakses menggunakan notasi titik. Jadi untuk mengakses READY nilai PizzaDeliveryStatusEnum , kita akan lakukan:
PizzaStatusEnum readyStatus = PizzaStatusEnum.READY;
Ini baik-baik saja, tetapi bagaimana jika kita mempunyai nilai status yang disimpan sebagai String , dan ingin mengubahnya menjadi PizzaStatusEnum ? Cara naif untuk melakukan ini adalah dengan menulis pernyataan pertukaran gergasi yang mengembalikan nilai enum yang betul untuk setiap nilai yang mungkin. Tetapi menulis dan mengekalkan kod tersebut adalah mimpi buruk dan harus dielakkan dengan segala cara.
Sebaliknya, yang enum jenis menyediakan valueOf () kaedah yang mengambil String sebagai hujah dan pulangan yang sepadan enum objek:
PizzaStatusEnum readyStatus = PizzaStatusEnum.valueOf("READY");
Kami dapat memastikan bahawa pendekatan ini benar-benar berfungsi melalui ujian unit:
@Test public void whenConvertedIntoEnum_thenGetsConvertedCorrectly() { String pizzaEnumValue = "READY"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf(pizzaEnumValue); assertTrue(pizzaStatusEnum == PizzaStatusEnum.READY); }
Penting untuk diingat bahawa kaedah valueOf () tidak sesuai dengan argumen yang diberikan padanya, jadi melewati nilai yang tidak sesuai dengan kes mana-mana nilai enum yang asal akan membawa kepada IllegalArgumentException :
@Test(expected = IllegalArgumentException.class) public void whenConvertedIntoEnum_thenThrowsException() { String pizzaEnumValue = "rEAdY"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf(pizzaEnumValue); }
Melewati nilai yang bukan merupakan sebahagian daripada nilai enum asal juga membawa kepada IllegalArgumentException :
@Test(expected = IllegalArgumentException.class) public void whenConvertedIntoEnum_thenThrowsException() { String pizzaEnumValue = "invalid"; PizzaStatusEnum pizzaStatusEnum = PizzaStatusEnum.valueOf(pizzaEnumValue); }
4. Kesimpulan
Dalam artikel ringkas ini, kami melihat cara mengubah String menjadi enum .
Sangat disarankan agar kita menggunakan kaedah nilaiOf () terbina dalam jenis enum , dan bukannya melakukan penukaran sendiri.
Seperti biasa, kod untuk artikel ini boleh didapati di GitHub.