java.lang.IllegalArgumentException:没有枚举const类

时间:2011-07-18 07:20:55

标签: java enums jaxb

我使用JAXB 2来针对XSD架构解析XML文件,并且在构建到Java类的ant期间,XML标记会自动解组。创建了一些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次迭代中得到异常。

** * ** * * 更新 < EM> * ** * ** *

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。

欣赏它。

威尔

3 个答案:

答案 0 :(得分:7)

这是因为您的第91个条目没有找到枚举值。失败的String的值是多少?

答案 1 :(得分:2)

您的XML没有有效的ENUM值(如小写的'good')或者它有一个空标记,因为如果您尝试通过MyEnum.valueOf(null)评估枚举元素,它将抛出IllegalArgumentException。 / p>

答案 2 :(得分:1)

这很可能是因为him.getToBinQuality()没有返回有效字符串,在这种情况下字符串应该是'GOOD|BAD|UGLY|NULL'

您可以通过在日志上打印值来轻松调试。