Je suis surpris de voir que l'enchaînement d'appels à unEnum fonctionne. J'ai eu une instance enum appelée "nom" et qui a été référencé à la place du nom () lorsque j'ai oublié les crochets. Enum "s devrait-il permettre l’enchaînement des appels? Utilisation de Groovy 2.4.10 - Voir les 3 derniers appels ci-dessous:
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
Réponses:
1 pour la réponse № 1C'est correct. Les énumérations, en Java, sont un sucre syntaxique (plus des choses utiles comme values()
et name()
) sur des champs statiques de la même classe. Ainsi, lorsque vous appelez un champ enum, vous avez également une référence statique à cette classe, qui a également accès aux autres champs de la classe:
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