簡體   English   中英

java.lang.IllegalArgumentException:沒有枚舉常量 class

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM