Propriétés en groovy, semblent comme des champs de classe en java sans un modificateur d'accès. Est-ce vrai? Ou ils ont une signification particulière. Il semble qu'il n'y a aucun moyen de faire les propriétés privées?
OriginalL'auteur Phoenix | 2012-11-05
Quand Groovy définition de la classe déclare un champ sans un modificateur d'accès, puis à un public setter/getter méthode de la paire et d'une salle de variable d'instance de champ est généré, qui est également connu comme "la propriété", selon le JavaBeans spécification.
Si nous déclarons une variable d'instance publique champ nous venons d'obtenir un champ public, sans un setter/getter méthode de paire.
De Groovy client pov, il n'y a pas de différence entre l'accès à un bien Groovy et un champ public au moment de l'exécution
bien que
a.field
accède à la variable d'instance directement eta.property
fait des appelsa.getProperty()
(oua.setProperty(...)
lors de l'affectation d'une valeur). Mais comme la propriété est conforme à la JavaBeans spec, la classe peut parfaitement être utilisé en Java environnements.Je ne vois pas beaucoup de sens dans la prise d'une "propriété privée".
private
restreint l'utilisation d'une méthode d'instance ou de classe/variable pour l'hébergement de type de classe. Mais peut-être que vous avez été, pour parler d'un domaine privé de variable d'instance.OriginalL'auteur Andre Steingress
Propriétés peuvent normalement être traités comme des champs, mais en réalité, ils sont soutenus par implicite des getters/setters, de sorte que vous pouvez toujours référence à eux comme des champs ou égale aux valeurs. En coulisses, ils sont à l'aide de getters/setters (que vous pouvez redéfinir si vous vous souciez de vous).
Cette page contient des détails sur les propriétés des champs et des modificateurs d'accès (voir en particulier la "Propriété et le champ des règles de la section"): http://groovy.codehaus.org/Groovy+Haricots
Il montre aussi que vous pouvez faire une propriété privée (domaine privé privé soutenu par des getters/setters), mais vous devez être explicite dans la définition de la getters/setters.
OriginalL'auteur Brian Henry