[英]Grails: java.lang.IllegalArgumentException: No enum const
[英]java.lang.IllegalArgumentException: No enum const class
I use JAXB 2 to parse an XML file against an XSD schema and the XML tags are automatically unmarshalled during ant build to Java classes. 創建了一些enums
。 代碼是:
@XmlType(name = "binQuality")
@XmlEnum
public enum BinQuality {
GOOD,
BAD,
UGLY,
NULL;
public String value() {
return name();
}
public static BinQuality fromValue(String v) {
return valueOf(v);
}
}
在我的代碼中,我調用:
BinQuality bq = BinQuality.valueOf(him.getToBinQuality());
在一個循環中,我只在第 91 次迭代中得到異常。
** * ** * *更新* ** * ** *
him.getToBinQuality()
確實返回一個有效的枚舉(GOOD/BAD/UGLY/NULL)。 以下是日志的摘錄。
....
2011-07-18 15:28:09 DEBUG (com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl:183) -> class com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl|exportToXml|him.getToBin():89|him.getToBinQuality():BAD
2011-07-18 15:28:09 DEBUG (com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl:183) -> class com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl|exportToXml|him.getToBin():90|him.getToBinQuality():UGLY
2011-07-18 15:28:09 DEBUG (com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl:183) -> class com.st.mas.wmr.persistence.process.ProcessStifOliBinConversionCompleteImpl|exportToXml|him.getToBin():91|him.getToBinQuality():BAD
2011-07-18 15:28:09 WARN (org.apache.struts.action.RequestProcessor:538) -> Unhandled Exception thrown: class java.lang.IllegalArgumentException
這看起來真的很神秘。
Java 使用的版本是 1.5。
欣賞它。
將要
這是因為找不到您的第 91 個條目的枚舉值。 失敗的字符串的值是多少?
您的 XML 沒有有效的 ENUM 值(如小寫的“好”)或者它有一個空標簽,因為如果您嘗試通過MyEnum.valueOf(null)
評估枚舉元素,它將拋出 IllegalArgumentException。
這很可能是因為him.getToBinQuality()
沒有返回有效字符串,在這種情況下,字符串應該是'GOOD|BAD|UGLY|NULL'
您可以通過在日志上打印值來輕松調試它。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.