Maison  >  Article  >  Java  >  Lombok Unleashed : Améliorer l'efficacité de Java avec des getters, des setters, des constructeurs, des constructeurs et bien plus encore

Lombok Unleashed : Améliorer l'efficacité de Java avec des getters, des setters, des constructeurs, des constructeurs et bien plus encore

王林
王林original
2024-07-16 17:46:50521parcourir

Lombok Unleashed: Elevating Java Efficiency with Getters, Setters, Constructors, Builders, and More

Introduction au projet Lombok

Project Lombok est une bibliothèque Java populaire qui vise à réduire le code passe-partout et à améliorer la productivité des codeurs en économisant beaucoup de temps et d'énergie en fournissant des annotations pour générer automatiquement du code Java commun pendant la compilation

Qu’est-ce que le projet Lombok ?

Le projet Lombok répond à la verbosité de Java en proposant des annotations qui éliminent le besoin d'écrire manuellement des constructions de code répétitives telles que les méthodes getters, setters, constructeurs, equals, hashCode et toString. En annotant des champs ou des classes avec des annotations Lombok, les codeurs peuvent demander au compilateur de générer ces méthodes automatiquement, réduisant ainsi la quantité de code passe-partout et rendant les classes Java plus compactes et lisibles.

Pourquoi utilisons-nous le Projet Lombok ?

L'utilisation du projet Lombok en Java offre plusieurs avantages intéressants qui contribuent à améliorer la productivité, la qualité du code et la maintenabilité.
Voici quelques raisons de choisir le Projet Lombok.
Cela réduit le « code chaudière ».
Cela améliore également la réutilisabilité et la lisibilité des codes.
C’est très simple à mettre en œuvre et ne présente aucune complexité.
S'intègre facilement aux « IDE ».

Comment implémenter Lombok en Java sur un projet Maven

La plupart de nos projets sont basés sur Maven. Il suffit donc d'ajouter les dépendances « Project Lombok » à notre fichier « Pom.xml » présent dans notre projet.

Allez dans le référentiel maven et copiez le référentiel Lombok Maven à partir de là, ajoutez la dernière dépendance lombok dans votre « Pom.xml » et enregistrez-la, puis actualisez le projet.

Fonctionnalité Getters, Setters du projet Lombok en Java

En Java, la pratique de loin la plus courante consiste à ajouter des getters et des setters à l'aide du modèle « Java Beans ». La plupart des IDE génèrent automatiquement du code pour ces modèles.

Voyons le code comprendre cette approche en créant un getter et un setter à l'aide de « Data Objects » et de « Data Factory » :

Objet de données sans Lombok

Bien que l'approche JavaBeans traditionnelle pour créer manuellement des méthodes getter et setter fasse le travail, mais elle présente plusieurs inconvénients et limitations qui la rendent moins souhaitable, en particulier dans les environnements de développement Java modernes, ses inconvénients sont principalement couverts dans le Lombok.

Donc, au lieu de cela, nous préférons utiliser le motif Lombok. Voici comment cela peut être implémenté en Java :

Fonctionnalités du constructeur du projet Lombok en Java

Constructeurs sans Lombok, nous devons définir manuellement chaque constructeur, ce qui peut être fastidieux et sujet aux erreurs, en particulier pour les classes avec de nombreux champs. De plus, nous devons gérer diverses configurations de constructeur, ce qui peut augmenter la complexité du code.

Lombok simplifie ce processus avec les annotations @NoArgsConstructor, @AllArgsConstructor et @RequiredArgsConstructor.

Constructeurs sans Lombok

L'utilisation des annotations Lombok réduit la quantité de code passe-partout qui doit être écrit manuellement. Avec Lombok, vous annotez simplement la classe et les champs, et les constructeurs sont générés automatiquement en fonction des critères spécifiés. Cela conduit à un code plus propre et plus concis.

Diverses caractéristiques et propriétés de Lombok

  1. Génération ToString
  • En Java, toString() est une méthode définie dans la classe java.lang.Object, qui sert à renvoyer une représentation sous forme de chaîne d'un objet. La méthode toString() est héritée par toutes les classes en Java, et son implémentation par défaut dans la classe Object renvoie une chaîne contenant le nom de la classe suivi du symbole « at » (@) et la représentation hexadécimale du code de hachage de l'objet.
  • Cependant, l'implémentation par défaut de toString() fournie par Object peut ne pas toujours être significative ou utile pour des classes spécifiques. Par conséquent, il est courant que les développeurs remplacent la méthode toString() dans leurs propres classes pour fournir une représentation sous forme de chaîne personnalisée qui décrit mieux l'état ou les propriétés de l'objet.
  • Selon notre exemple, une classe Profile peut remplacer toString() pour renvoyer une chaîne contenant le prénom, le nom, la désignation et les informations sur l'âge. Remplacer toString() permet d'imprimer ou de consigner facilement les informations sur les objets dans un format lisible par l'homme, ce qui peut être utile pour le débogage, la journalisation ou l'affichage d'informations aux utilisateurs.
  • Sans utiliser les annotations ToString Lombok, nous devons implémenter manuellement la méthode toString() dans la classe Profile. Nous concaténons les champs firstName, lastName, désignation et age pour créer la représentation sous forme de chaîne souhaitée. Cette implémentation manuelle obtient le même résultat que l'annotation @ToString de Lombok.

Sans utiliser la fonctionnalité d'annotations ToString

  • L'annotation @ToString génère une méthode toString() pour la classe, fournissant une représentation sous forme de chaîne de ses champs. Pas besoin d'en écrire un nous-mêmes et de le maintenir à mesure que nous enrichissons notre modèle de données.
  • Avec cette annotation, appeler toString() sur une instance de profile renverra une chaîne contenant les valeurs de ses champs.
  • Les annotations @Exclude peuvent être utiles pour toutes les annotations différentes telles que Getters, Setters, ToString, EqualAndHashCode, etc. Comprenons cela avec l'exemple d'annotation @ToString.
  • En annotant le champ de désignation avec @ToString(exclude = {“designation”})
  • Lombok l'exclut de l'inclusion dans la méthode toString() générée par @ToString. Cela peut être utile si vous souhaitez éviter d'afficher certains champs dans la représentation sous forme de chaîne d'un objet.

2. Génération EqualAndHashCode

  • En Java, equals() et hashCode() sont deux méthodes couramment utilisées pour implémenter respectivement l'égalité des objets et la génération de code de hachage.
  • Méthode Equals() : La méthode Equals() est utilisée pour comparer l'égalité de deux objets. Par défaut, la méthode equals() fournie par la classe Object compare les références d'objets, ce qui signifie qu'elle renvoie true uniquement si les deux objets comparés sont la même instance en mémoire. Cependant, il est souvent nécessaire de surcharger la méthode equals() dans les classes personnalisées pour définir une notion d'égalité significative basée sur les attributs des objets.
  • Méthode hashCode() : La méthode hashCode() est utilisée pour générer une valeur de code de hachage pour un objet. Un code de hachage est une valeur entière qui représente l'état d'un objet et est généralement utilisé dans les structures de données basées sur le hachage telles que les tables de hachage. La méthode hashCode() est importante car elle permet de stocker et de récupérer efficacement les objets dans des collections basées sur le hachage.
  • Dans notre exemple, nous avons implémenté et remplacé manuellement la méthode equals() pour comparer les champs de deux objets Profile pour l'égalité, et la méthode hashCode() pour générer un code de hachage basé sur les champs.
  • Nous utilisons la méthode Objects.equals() de la classe java.util.Objects pour comparer les champs pour l'égalité, et la méthode Objects.hash() pour générer le code de hachage.

Sans utiliser la fonctionnalité d'annotations EqualAndHashCode

  • L'annotation @EqualsAndHashCode génère les méthodes equals() et hashCode() basées sur les champs de la classe.
  • Avec cette annotation, Lombok génère les méthodes equals() et hashCode() en utilisant tous les champs de la classe.
  • Cela élimine le besoin de mise en œuvre manuelle de ces méthodes, réduisant ainsi le code passe-partout et améliorant la maintenabilité du code.

3. Annotations de données
Sans utiliser les annotations @data, nous devons implémenter manuellement les fonctionnalités getters, setters et constructeurs dans notre code.

  • Sans utiliser la fonctionnalité d'annotations de données

  • L'annotation @data est un raccourci pratique qui regroupe @Getter, @setter, @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode et bien d'autres annotations.

  • En utilisant @data, Lombok génère automatiquement ces méthodes pour nous en fonction des champs déclarés dans la classe. Cela réduit considérablement la quantité de code passe-partout que nous devons écrire et maintenir, rendant notre code plus concis et plus lisible.

  1. Modèle de constructeur
  • Revenant à notre exemple de profil, la construction d'une nouvelle instance nécessite l'emploi d'un constructeur avec un nombre potentiellement important de quatre arguments, une tâche qui devient lourde à mesure que nous introduisons des attributs supplémentaires dans la classe.
  • Heureusement, Lombok fournit une solution robuste avec sa fonctionnalité @builder, qui facilite l'utilisation du Builder Pattern pour créer de nouvelles instances. Intégrons cette fonctionnalité dans notre classe Profile.

package org.example.dataobjects;

importer du lombok.*;

@Getter
@setter
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
@ToString(exclude = {"désignation"})
@EqualsAndHashCode
@constructeur
@données
Profil de classe publique {
chaîne privée firstName ;
chaîne privée nom de famille;
Désignation de chaîne privée ;
âge int privé ;

public static void main(String[] args) {

// Création d'une instance de Profile à l'aide du builder
Profil de profil = Profile.builder()
.firstName("Partie")
.lastName("Kathrotiya")
.designation("Ingénieur en automatisation QA")
.age(23)
.build();
>
>

Delombok

  • Delombok est un outil fourni par le projet Lombok qui inverse les effets des annotations de Lombok, essentiellement en « delombokifiant » votre code. Il vous permet de convertir le code source Java contenant des annotations Lombok en code Java brut en développant les annotations et en les remplaçant par le code passe-partout correspondant qu'elles généreraient.
  • L'objectif principal de Delombok est de faciliter la compatibilité et l'interopérabilité avec des environnements ou des outils qui ne prennent pas directement en charge les annotations Lombok. Par exemple, si vous devez partager votre code avec des développeurs qui n'ont pas installé Lombok dans leur environnement de développement, ou si vous souhaitez analyser ou refactoriser du code annoté par Lombok à l'aide d'outils qui ne comprennent pas les annotations Lombok, vous pouvez utiliser Delombok pour convertir le code sous une forme compréhensible et utilisable dans ces contextes.
  • Delombok peut être invoqué via la ligne de commande ou intégré à des outils de build tels que Maven ou Gradle. Lorsque vous exécutez Delombok sur votre code source, il traite les fichiers Java, développe les annotations Lombok et génère de nouveaux fichiers Java sans aucune annotation Lombok. Le code résultant est fonctionnellement équivalent au code original mais sans aucune dépendance de Lombok.
  • Dans l'ensemble, Delombok est un outil utile fourni par le projet Lombok qui améliore l'interopérabilité et la maintenabilité des bases de code à l'aide des annotations Lombok, permettant aux développeurs de tirer parti des avantages de Lombok tout en garantissant la compatibilité avec un large éventail d'environnements et d'outils de développement.

Conclusion

Bien que cet article mette en évidence les fonctionnalités que j'ai trouvées les plus utiles, Lombok propose une multitude de fonctionnalités et de personnalisations supplémentaires.
La documentation de Lombok est une ressource inestimable, fournissant des explications détaillées et des exemples pour chaque annotation. Si cet article vous intrigue, je vous invite à approfondir la documentation de Lombok pour découvrir encore plus de possibilités.
De plus, le site du projet propose des guides complets sur l'intégration de Lombok dans divers environnements de programmation. Que vous utilisiez Eclipse, NetBeans, IntelliJ ou autres, soyez assuré que Lombok s'intègre parfaitement à votre flux de travail. En tant que personne qui passe fréquemment d’un IDE à l’autre, je peux attester de la polyvalence et de la fiabilité de Lombok sur toutes les plateformes.
Dans l'ensemble, le projet Lombok offre un ensemble complet de fonctionnalités qui rationalisent le développement Java, réduisent la verbosité du code et favorisent les meilleures pratiques.
Le projet Lombok propose un ensemble complet de fonctionnalités qui rationalisent les tests Java, réduisent la verbosité du code et favorisent les meilleures pratiques. En incorporant les constructeurs Lombok et les constructeurs Lombok, les testeurs peuvent simplifier davantage leur code et améliorer la maintenabilité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn