在SpEL中比较枚举类型

33

在Spring的@Cacheable注解中,我想指定一个unless条件。

然而,我的返回值既不是基本类型也不是Java bean,而是一个枚举。

我该如何在SpEL(Spring表达式语言)中与另一个枚举进行相等比较?


你能具体点吗?你要比较哪两个操作数?你要比较什么? - Sotirios Delimanolis
@SotiriosDelimanolis 一个枚举类的实例和枚举值。例如 instance == Enum.CERTAIN_VALUE - Harold L. Brown
2个回答

83
#result == T(fully.qualified.path.to.AnEnum).A_VALUE

请参考这里:

您可以使用特殊的T运算符来指定java.lang.Class(类型)的实例。


它也能正常工作。 - NCrash

29

#object.someEnumProperty.name() == 'CERTAIN_VALUE'

这也可以正常工作。


你是对的 @michaldo。我修改了我的回答,现在它可以正常工作了。之前是脑海中想出来的,很抱歉第一次的尝试失败了。 - sorrymissjackson
现在可以了。我取消了我的评论。 - michaldo
这个答案可以比被接受的答案更短,因为你不需要编写完整的限定路径。 - Wouter
2
但是您必须确保它始终与枚举变量匹配,以防其发生更改。 - aksh1618

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接