2012-12-18 51 views
-1

所有的String to Enum皈依只取一个字符串,但在我的例子字符串是这样的...将字符串转换为枚举在java中给错误?

String allDays="MONDAY,SUNDAY,FRIDAY"; 

和我的枚举类这样的..

public enum WeekdayType { 
MONDAY(Calendar.MONDAY), TUESDAY(Calendar.TUESDAY), WEDNESDAY(
     Calendar.WEDNESDAY), THURSDAY(Calendar.THURSDAY), FRIDAY(
     Calendar.FRIDAY), SATURDAY(Calendar.SATURDAY), SUNDAY(
     Calendar.SUNDAY); 

private int day; 

private WeekdayType(int day) { 
    this.day = day; 
} 

public int getDay() { 
    return day; 
}} 

所以在这个时间例子WeedayType.valueOf(allDay)是给出错误..... 对此的任何建议..

+0

你是否得到_java.lang.IllegalArgumentException:没有枚举常量类com.java.core.Test $ WeekdayType.MONDAY,SUNDAY,FRIDAY_错误。如果是,这是正确的行为。你期望的输出是什么? – Jayamohan

+0

correct IllegalArgumentException –

+0

Your String is _String allDays =“MONDAY,SUNDAY,FRIDAY”; _ and _WeedayType.valueOf(allDay)_ will only the _IllegalArgumentException_ only。你可以传递给valueOf方法的有效值是“MONDAY”,“TUESDAY”等(即你的枚举名) – Jayamohan

回答

1

你会得到下面的错误

java.lang.IllegalArgumentException: No enum const class com.java.core.Test$WeekdayType.MONDAY,SUNDAY,FRIDAY

的原因是您通过以下字符串到您的WeedayType枚举,作为例外,说这是一种非法的说法。

String allDays = "MONDAY,SUNDAY,FRIDAY"; 
WeedayType.valueOf(allDay); 

可以传递给valueOf方法一样有效的值是“星期一”,“星期二”等(即您的枚举名称)。其他值给你java.lang.IllegalArgumentException这是正确的行为。

2

请试试类似:

String allDays = "MONDAY,SUNDAY,FRIDAY"; 
     for (String day : allDays.split(",")) { 
      System.out.println(WeekdayType.valueOf(day)); 
     } 
+0

但是在那个时候只有一个值给我想要三个值... –