Utilitaires avec Lombok

De EjnTricks
Révision de 23 février 2018 à 18:23 par Etienne (discussion | contributions)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)

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.


Hand-icon.png Votre avis

Nobody voted on this yet

 You need to enable JavaScript to vote


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


Tool-box.png 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);
  }

}


Viewer icon.png Voir aussi

Documentation officielle: https://projectlombok.org/features/experimental/UtilityClass