我在使用一些遗留代码时遇到了一些问题。一张票要我写一个测试过程有效性的脚本;但是,当脚本运行时,我不断收到此异常:
java.lang.IllegalArgumentException: No enum const class edu.cmu.s3.common.enums.RegistrationStatus.;
对于记录,正在使用的数据库是旧的Ingres遗留系统,因此空值表示为空字符串 - 非常漂亮,我必须添加。
无论如何,看起来每当遇到空字符串时,它就会在创建枚举时失败。我检查了枚举,但它包含了这个成员:
BLANK("", "Blank")
这会让我觉得空字符串确实是一个有效的参数,但它看起来并非如此。
CAN枚举使用空字符串作为参数,还是需要更新比我最初假设更多的遗留代码?
感谢您的帮助
答案 0 :(得分:9)
空字符串是枚举构造函数的有效参数 - 但它不是有效的枚举名称。
每个枚举值名称必须是有效的Java标识符。
答案 1 :(得分:1)
如果您使用Enum.valueOf(String)
将数据库中的Strings
解析为Enums
,那么您的问题是valueOf
名称的Enum
个关键字本身,即BLANK
。
这对您有用:Enum.valueOf( "BLANK" )
但不是:Enum.valueOf( "" )
如果您想根据Enums
构造函数中的其他字段解析Enum
,则必须自己编写该代码。