Access Level avec Lombok

De EjnTricks

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.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


Vues-icon.png 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.


Add-icon.png 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.