为什么枚举的valueOf()会返回null?

时间:2015-02-16 18:07:28

标签: java enums

在修改我还不完全熟悉的现有应用程序时,我似乎遇到了

的情况
EnumClass.valueOf(s)
无论我传入的null值是什么(合法与否),

都会返回StringEnumClass本身很简单(基本上是public enum EnumClass { Name1, Name2, Name3 })。当我尝试独立测试时(即返回枚举类的对象或抛出IllegalArgumentException),它的行为与预期的一样,但在较大的应用程序中,它返回null。

是否存在合法发生的条件?例如。是否有一个编译器选项导致不生成字符串表(用于空间优化)?我使用的是JDK 1.7。

编辑:好的,差不多一个月后,我终于有机会尝试缩小问题范围。它与JMockit有关,我们将其与JUnit结合使用。这是一个测试类:

@Mocked
private EnumClass2 e;

JMockit教程说可以模拟enum类,虽然Java不允许你创建enum的实例;我的猜测是,JMockit经历了一些真正的诡计以实现这一目标。无论如何,它显然没有正确发生。似乎使用这个导致valueOf即使对于不同的enum类也被搞砸了,与被模拟的那个没有关系。我不知道我们正在使用哪个版本的JMockit。

更多:我无法在家中重现这个问题,因此可能需要使用旧版本的JMockit,事物版本的组合或其他人的定制完成。

0 个答案:

没有答案