如何在Java中将字符串值转换为Enum?

jav*_*ava 27 java enums spring hibernate

在我的Java程序中有Enum类就像..

public enum DemoType{
DAILY, WEEKLY, MONTHLY;
 }
Run Code Online (Sandbox Code Playgroud)

在我的jsp中,我从用户那里获取值,例如选择框,这个Jsp称为DemoJspBean...

<form:select path="repeatWeektype">
    <form:option value="DAILY" />
    <form:option value="WEEKLY" />
    <form:option value="MONTHLY" />
</form:select>
Run Code Online (Sandbox Code Playgroud)

我的HibernateVO类是..

public class DemoVO{
  @Column(name = "REPEAT_TYPE")
  @Enumerated(EnumType.STRING)
  private RepeatType repeatType;
}
Run Code Online (Sandbox Code Playgroud)

现在我想使用Hibernate Bean(setter和getter)将此值插入到DB中

DemoVO demo = new DemoVO();
demo.setRepeatType(demoJspBean.getRepeatWeektype());
Run Code Online (Sandbox Code Playgroud)

但它显示错误..

那么如何将我的String值转换为枚举类类型?

kol*_*sus 56

valueOfEnum课堂上使用该方法.

DemoType demoType =   DemoType.valueOf("DAILY")
Run Code Online (Sandbox Code Playgroud)

它会抛出一个IllegalArgumentException应该提供的字符串参数无效.用你的例子

DemoType demoType =  DemoType.valueOf("HOURLY");
Run Code Online (Sandbox Code Playgroud)

上面的行将抛出一个IllegalArgumentException因为HOURLY不是你的一部分DemoType


Ruc*_*era 9

这可以帮助您了解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;
     }
   }
 }
Run Code Online (Sandbox Code Playgroud)

以下显示了我的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
   }
}
Run Code Online (Sandbox Code Playgroud)