[英]How to convert string value into Enum in Java?
在我的Java程序中有Enum類就像..
public enum DemoType{
DAILY, WEEKLY, MONTHLY;
}
在我的jsp中,我從用戶那里獲取值,如選擇框和這個Jsp調用,如DemoJspBean
..
<form:select path="repeatWeektype">
<form:option value="DAILY" />
<form:option value="WEEKLY" />
<form:option value="MONTHLY" />
</form:select>
我的HibernateVO類是..
public class DemoVO{
@Column(name = "REPEAT_TYPE")
@Enumerated(EnumType.STRING)
private RepeatType repeatType;
}
現在我想使用Hibernate Bean(setter和getter)將此值插入到DB中
DemoVO demo = new DemoVO();
demo.setRepeatType(demoJspBean.getRepeatWeektype());
但它顯示錯誤..
那么如何將我的String值轉換為枚舉類類型?
在Enum
類上使用valueOf
方法。
DemoType demoType = DemoType.valueOf("DAILY")
如果提供的字符串參數無效,它將拋出IllegalArgumentException
。 用你的例子
DemoType demoType = DemoType.valueOf("HOURLY");
上面的行將拋出IllegalArgumentException
因為HOURLY
不是您的DemoType
一部分
這可以幫助您了解enum
類型的工作原理。
說,這是我的enum
課程。
public enum GetDate {
SUNDAY("1"), MONDAY("2"), TUESDAY("3"), WEDNESDAY("4"), THURSDAY("5"), FRIDAY("6"), SATURDAY("7");
private String code;
private GetDate(String code) {
this.code = code;
}
public String getCode() {
return code;
}
public static GetDate getEnum(String code) {
switch (code) {
case "1":
return SUNDAY;
case "2":
return MONDAY;
case "3":
return TUESDAY;
case "4":
return WEDNESDAY;
case "5":
return THURSDAY;
case "6":
return FRIDAY;
case "7":
return SATURDAY;
default:
return null;
}
}
}
以下顯示我的enum
如何工作
public class MyClass {
public static void main(String[] args) {
System.out.println("Sunday enum value " + GetDate.SUNDAY); // enum SUNDAY
System.out.println("Name of the day assign to 1 " + GetDate.getEnum("1")); // enum SUNDAY
System.out.println("Sunday enum value " + GetDate.valueOf("SUNDAY").getCode()); // String code of SUNDAY
System.out.println("Sunday enum value " + GetDate.valueOf("SUNDAY"));// enum Sunday
}
}
如果由於某種原因你使用枚舉中不存在的值(使用方法DemoType.valueOf()
,你將得到一個java.lang.IllegalArgumentException
。嘿!等等!你可以迭代到值:
public static void main(String[] args) {
System.out.println(DemoType.convert("DAILY"));
System.out.println(DemoType.convert("YEARLY"));
}
enum DemoType {
DAILY, WEEKLY, MONTHLY;
public static DemoType convert(String str) {
for (DemoType demoType : DemoType.values()) {
if (demoType.toString().equals(str)) {
return demoType;
}
}
return null;
}
}
輸出:
DAILY
null
使用Spring的TypeConverterSupport,您可以將字符串屬性解析為枚舉實例,如下所示:
@Value("${enum.type}")
MyEnum enum;
您可以通過傳遞字符串來使用DemoType.valueOf()方法,該字符串將其轉換為與字符串對應的DemoType枚舉。 確保String值與聲明的枚舉相同。 例如
DemoType dt = DemoType.valueOf("DAILY")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.