Connaissez-vous des alternatives à Lombok? En utilisant Lombok, nous pouvons oublier les classes de messing avec des getters et setters et toString
. Je veux l'utiliser dans mon projet, mais je me demande s'il existe de meilleures alternatives?
J'utilise Java 1.7 et je ne peux pas passer à 1.8.
Je crains, il n'y a pas d'alternative sauf si vous voulez passer à quelque chose comme Scala ou si vous êtes satisfait d'un ensemble plus petit de fonctionnalités comme celles fournies par AutoValue .
Alors que AutoValue
est probablement le meilleur que vous puissiez obtenir avec du Java pur, il offre
mais ça manque
Bien que je convienne fermement que l'immuabilité est une vertu, elle n'est parfois pas applicable. Quoi qu'il en soit, Lombok s'efforce de prendre en charge l'immuabilité, il s'intègre même aux collections immuables de Guava, et vous pouvez écrire
@Builder @Getter public final class Sentence {
private final boolean truthValue;
@Singular private final ImmutableList<String> words;
}
et l'utiliser comme
Sentence s = Sentence.builder().truthValue(true)
.Word("Lombok").Word("is").Word("cool").build();
assertEquals(3, s.getWords().size());
Remarque: je ne suis pas l'auteur, donc je peux dire que c'est cool.
Pour les immuables, @Wither
et toBuilder
sont plutôt cool. Le premier vous permet de créer une copie différant par un seul champ et le second vous donne un générateur commençant par les valeurs actuelles et adapté pour changer plusieurs champs. Les deux lignes suivantes sont équivalentes:
o.withA(1).withB(2)
o.toBuilder().a(1).b(2).build()
Lombok et AutoValue
utilisent de la magie. La magie de ce dernier est le traitement d'annotation standard, il est donc assez robuste. Il présente certains inconvénients comme indiqué sur page 27 . J'ajouterais le fait que certains AutoValue_foo sont générés que je n'ai pas commandés.
Lombok utilise de la magie noire et est donc beaucoup plus fragile, mais il offre plus et fonctionne assez bien.
"Mieux" est assez controversé ici, mais une alternative est AutoValue , disponible ici . Cette présentation explique certaines des différences entre AutoValue et par exemple Lombok.
En particulier, AutoValue met l'accent sur l'immuabilité (une bonne chose, généralement!) Et un minimum de magie extralinguistique (très différent de Lombok).