首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Groovy枚举-调用链

Groovy枚举-调用链
EN

Stack Overflow用户
提问于 2017-06-05 19:55:47
回答 1查看 83关注 0票数 1

我很惊讶地看到对枚举的链式调用是有效的。我碰巧有一个名为'name‘的枚举实例,当我忘记了括号时,它被引用了,而不是name()。枚举应该允许链式调用吗?使用Groovy 2.4.10 -参见下面的最后3个调用:

代码语言:javascript
复制
Groovy Shell (2.4.10, JVM: 1.8.0_121)
Type ':help' or ':h' for help.

groovy:000> public enum Compass { north, south }
===> true
groovy:000> Compass.north
===> north
groovy:000> Compass.north.name
ERROR groovy.lang.MissingPropertyException:
No such property: name for class: Compass
groovy:000> Compass.north.name()
===> north
groovy:000> public enum Compass { north, south, name }
===> true
groovy:000> Compass.north.name()
===> north
groovy:000> Compass.north.name
===> name
groovy:000> Compass.north.south
===> south
groovy:000> Compass.north.south.north
===> north
EN

回答 1

Stack Overflow用户

发布于 2017-06-06 01:15:57

这是正确的。在Java语言中,枚举是同一类中静态字段之上语法糖(加上像values()name()这样有用的东西),因此,当您调用枚举字段时,您还有一个对该类的静态引用,它还可以访问其他类的字段:

代码语言:javascript
复制
class Compass {
    static NORTH = new Compass()
    static SOUTH = new Compass()
}


assert Compass.NORTH.SOUTH.NORTH == Compass.NORTH

def west = new Compass()
assert west.SOUTH == Compass.SOUTH
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44368408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档