3

我对一些遗留代码有一点问题。一张票要求我编写一个脚本来测试流程的有效性;但是,当脚本运行时,我不断收到此异常:

 java.lang.IllegalArgumentException: No enum const class edu.cmu.s3.common.enums.RegistrationStatus.;

作为记录,正在使用的数据库是一个旧的 Ingres 遗留系统,因此空值被表示为空字符串——非常漂亮,我必须补充一下。

无论如何,看起来每当遇到空字符串时,它都会在创建枚举时失败。不过,我检查了枚举,它包含这个成员:

BLANK("", "Blank")

这会让我认为空字符串确实是一个有效的参数,但看起来不是。

CAN 枚举使用空字符串作为参数,还是我需要更新比我最初假设的更多的遗留代码?

谢谢您的帮助

4

2 回答 2

9

空字符串是枚举构造函数的有效参数- 但它不是有效的枚举名称

每个枚举值名称都必须是有效的 Java 标识符。

于 2012-04-16T18:47:32.847 回答
1

如果您使用从数据库Enum.valueOf(String)解析StringsEnums,那么您的问题是名称本身valueOf的键Enum,即BLANK.

这对你有用:Enum.valueOf( "BLANK" )

但不是:Enum.valueOf( "" )

如果您想Enums基于传递到构造函数中的其他字段进行解析Enum,则必须自己编写该代码。

于 2012-04-16T18:48:52.543 回答