Utilitaires avec Lombok
Dans tout projet Java
des classes utilitaires sont générées. Dans les bonnes pratiques, ces classes doivent respecter une certaine syntaxe. La classe doit être final
, sans constructeur disponible, et les fonctions / méthodes static
.
Même si le respect de cette nomenclarure n'est pas fastidieuse, Lombok
permet de la respecter à l'aide de l'annotation UtilityClass
.
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.utilities
.
Votre avis
Nobody voted on this yet
|
|
Expérimental
Au moment de la rédaction de cet article, la version utilisé de Lombok
est 1.16.20
. L'annotation est encore expérimentale et sujet à débat.
Déclaration
La classe TutorialUtils
est écrite sans aucun respect, elle n'est pas final
avec le constructeur par défaut, et la fonction sayHello
n'est pas static
.
package fr.ejn.tutorial.java.lombok.utilities;
import lombok.experimental.UtilityClass;
/**
* Tutorial class to illustrate utilities generation, respecting static / final specifications.
*
* @author Etienne Jouvin
*
*/
@UtilityClass
public class TutorialUtils {
/**
* Build a message to say Bye.
*
* @param name Name to add in the message.
* @return Built message.
*/
public static String sayBye(String name) {
return String.format("Bye %s", name);
}
/**
* Build a message to say Hello.
*
* @param name Name to add in the message.
* @return Built message.
*/
public String sayHello(String name) {
return String.format("Hello %s", name);
}
}
A noter sur cet exemple, la méthode sayBye
est static et elle le reste. L'ajout de l'annotation ne provoque pas d'erreur.
Le test unitaire TutorialUtilsTest
permet de valider que les fonctions sont toutes static
. En écrivant le test, il est également constaté qu'il est impossible d'instantier la classe.
package fr.ejn.tutorial.java.lombok.utilities;
import static org.assertj.core.api.Assertions.assertThat;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
public class TutorialUtilsTest {
@BeforeClass
public static void setUpBeforeClass() throws Exception {
}
@AfterClass
public static void tearDownAfterClass() throws Exception {
}
@Before
public void setUp() throws Exception {
}
@After
public void tearDown() throws Exception {
}
@Test
public void testSayBye() {
String expected = "Bye user name";
String actual = TutorialUtils.sayBye("user name");
assertThat(actual).isEqualTo(expected);
}
@Test
public void testSayHello() {
String expected = "Hello user name";
String actual = TutorialUtils.sayHello("user name");
assertThat(actual).isEqualTo(expected);
}
}
Voir aussi
Documentation officielle: https://projectlombok.org/features/experimental/UtilityClass