Access Level avec Lombok : Différence entre versions
m |
(Aucune différence)
|
Version actuelle en date du 23 février 2018 à 17:53
Lombok
permet de générer automatiquement un grand nombre de fonctions, comme les constructeurs ou les accesseurs. Par défaut la visilité est positionné à publi
.
Cet article présente l'utilisation de l'énumération AccessLevel
afin de spécialiser la visibilité.
Le code source est disponible à l'adresse suivante: http://www.svn.jouvinio.net/study/trunk/lombok, et en particulier les classes du package fr.ejn.tutorial.java.lombok.level
.
Votre avis
Nobody voted on this yet
|
|
Accesseurs
Les annotations Getter
et Setter
accepte une valeur en argument qui est par défaut positionnée à lombok.AccessLevel.PUBLIC
, donannt la visibilité public
aux fonction générées, comme démontré dans la classe DataObject
.
package fr.ejn.tutorial.java.lombok.level;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
/**
* Tutorial class to illustrate AccessLevel use on getter and setter.
*
* @author Etienne Jouvin
*
*/
public class DataObject {
@Getter(AccessLevel.PACKAGE)
@Setter(AccessLevel.PACKAGE)
private String packageField;
@Getter(AccessLevel.PROTECTED)
@Setter(AccessLevel.PROTECTED)
private String protectedField;
@Getter
@Setter
private String publicField;
}
Le test unitaire DataObjectTest
ne permet pas de démontrer correctement la génération des fonctions. Par contre, la représentation sous un IDE permet de visualiser la visibilité comme dans la copie d'écran suivante faite sous Eclipse
.
Constructeurs
De la même façon, il est possible de spécifier la visibilité des constructeurs, avec l'argument access
des annotations. La classe DataWithConstructor
montre la création d'un constructeur sans arguments avec la visibilité package
et un avec tous les arguments et en visibilité protected
.
package fr.ejn.tutorial.java.lombok.level;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
/**
* Tutorial class to illustrate AccessLevel use on constructor.
*
* @author Etienne Jouvin
*
*/
@NoArgsConstructor(access = AccessLevel.PACKAGE)
@AllArgsConstructor(access = AccessLevel.PROTECTED)
@Getter
@Setter
public class DataWithConstructor {
private String id;
}
Le test unitaire DataWithConstructorTest
ne permet pas de démontrer correctement la génération des constructeurs. Par contre, la représentation sous un IDE permet de visualiser la visibilité comme dans la copie d'écran suivante faite sous Eclipse
.