Heim  >  Artikel  >  Java  >  Lombok Unleashed: Steigerung der Java-Effizienz mit Gettern, Settern, Konstruktoren, Buildern und mehr

Lombok Unleashed: Steigerung der Java-Effizienz mit Gettern, Settern, Konstruktoren, Buildern und mehr

王林
王林Original
2024-07-16 17:46:50519Durchsuche

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

Einführung in das Projekt Lombok

Project Lombok ist eine beliebte Java-Bibliothek, die darauf abzielt, Boilerplate-Code zu reduzieren und die Produktivität von Programmierern zu steigern, indem sie viel Zeit und Energie spart, indem sie Anmerkungen bereitstellt, um während der Kompilierungszeit automatisch allgemeinen Java-Code zu generieren

Was ist das Projekt Lombok?

Project Lombok adressiert die Ausführlichkeit von Java, indem es Annotationen anbietet, die das manuelle Schreiben sich wiederholender Codekonstrukte wie Getter, Setter, Konstruktoren, Equals, HashCode und toString-Methoden überflüssig machen. Durch das Annotieren von Feldern oder Klassen mit Lombok-Annotationen können Programmierer den Compiler anweisen, diese Methoden automatisch zu generieren, wodurch die Menge an Boilerplate-Code reduziert und Java-Klassen kompakter und lesbarer werden.

Warum nutzen wir Project Lombok?

Die Verwendung von Project Lombok in Java bietet mehrere überzeugende Vorteile, die zu einer verbesserten Produktivität, Codequalität und Wartbarkeit beitragen.
Hier sind einige Gründe, sich für Project Lombok zu entscheiden.
Es reduziert den „Boilerplate Code“.
Es verbessert auch die Wiederverwendbarkeit und Lesbarkeit von Codes.
Es ist sehr einfach zu implementieren und weist keinerlei Komplexität auf.
Lässt sich problemlos in „IDEs“ integrieren.

So implementieren Sie Lombok in Java in einem Maven-Projekt

Die meisten unserer Projekte basieren auf Maven. Wir müssen also nur „Project Lombok“-Abhängigkeiten zu unserer „Pom.xml“-Datei in unserem Projekt hinzufügen.

Gehen Sie zum Maven-Repository und kopieren Sie das Lombok Maven-Repository von dort, fügen Sie die neueste Lombok-Abhängigkeit in Ihre „Pom.xml“ ein und speichern Sie sie, dann aktualisieren Sie das Projekt.

Getter- und Setter-Funktion von Project Lombok in Java

In Java besteht die bei weitem häufigste Praxis darin, Getter und Setter mithilfe des „Java Beans“-Musters hinzuzufügen. Die meisten IDEs generieren automatisch Code für diese Muster.

Sehen wir uns an, wie der Code diesen Ansatz versteht, indem er mithilfe von „Data Objects“ und „Data Factory“ Getter und Setter erstellt:

Datenobjekt ohne Lombok

Während der traditionelle JavaBeans-Ansatz zum manuellen Erstellen von Getter- und Setter-Methoden die Arbeit erledigt, weist er mehrere Nachteile und Einschränkungen auf, die ihn insbesondere in modernen Java-Entwicklungsumgebungen weniger wünschenswert machen. Alle seine Nachteile werden im Lombok größtenteils behandelt.

Stattdessen verwenden wir lieber das Lombok-Muster. So kann es in Java implementiert werden:

Konstruktorfunktionen von Project Lombok in Java

Konstruktoren ohne Lombok müssen wir jeden Konstruktor manuell definieren, was mühsam und fehleranfällig sein kann, insbesondere bei Klassen mit vielen Feldern. Darüber hinaus müssen wir mit verschiedenen Konstruktorkonfigurationen umgehen, was die Komplexität des Codes erhöhen kann.

Lombok vereinfacht diesen Prozess mit den Annotationen @NoArgsConstructor, @AllArgsConstructor und @RequiredArgsConstructor.

Konstrukteure ohne Lombok

Durch die Verwendung von Lombok-Annotationen wird die Menge an Boilerplate-Code reduziert, der manuell geschrieben werden muss. Mit Lombok kommentieren Sie einfach die Klasse und die Felder und die Konstruktoren werden automatisch basierend auf den angegebenen Kriterien generiert. Dies führt zu einem saubereren und prägnanteren Code.

Verschiedene Merkmale und Eigenschaften von Lombok

  1. ToString-Generierung
  • In Java ist toString() eine in der Klasse java.lang.Object definierte Methode, die dazu dient, eine String-Darstellung eines Objekts zurückzugeben. Die toString()-Methode wird von allen Klassen in Java geerbt und ihre Standardimplementierung in der Object-Klasse gibt einen String zurück, der den Klassennamen gefolgt vom „at“-Symbol (@) und der hexadezimalen Darstellung des Hash-Codes des Objekts enthält.
  • Allerdings ist die von Object bereitgestellte Standardimplementierung von toString() für bestimmte Klassen möglicherweise nicht immer sinnvoll oder nützlich. Daher ist es für Entwickler üblich, die toString()-Methode in ihren eigenen Klassen zu überschreiben, um eine benutzerdefinierte String-Darstellung bereitzustellen, die den Zustand oder die Eigenschaften des Objekts besser beschreibt.
  • In unserem Beispiel könnte eine Profile-Klasse toString() überschreiben, um eine Zeichenfolge zurückzugeben, die die Informationen zu Vorname, Nachname, Bezeichnung und Alter enthält. Das Überschreiben von toString() ermöglicht das einfache Drucken oder Protokollieren von Objektinformationen in einem für Menschen lesbaren Format, was beim Debuggen, Protokollieren oder Anzeigen von Informationen für Benutzer hilfreich sein kann.
  • Ohne die Verwendung von ToString Lombok-Annotationen müssen wir die toString()-Methode innerhalb der Profile-Klasse manuell implementieren. Wir verketten die Felder „Vorname“, „Nachname“, „Bezeichnung“ und „Alter“, um die gewünschte Zeichenfolgendarstellung zu erstellen. Diese manuelle Implementierung erzielt das gleiche Ergebnis wie Lomboks @ToString-Annotation.

Ohne Verwendung der Funktion „ToString-Anmerkungen“

  • Die @ToString-Annotation generiert eine toString()-Methode für die Klasse und stellt eine String-Darstellung ihrer Felder bereit. Sie müssen nicht selbst eines schreiben und es pflegen, während wir unser Datenmodell erweitern.
  • Mit dieser Annotation gibt der Aufruf von toString() für eine Profilinstanz eine Zeichenfolge zurück, die die Werte ihrer Felder enthält.
  • @Exclude-Annotationen können für verschiedene Annotationen wie Getter, Setter, ToString, EqualAndHashCode usw. nützlich sein. Lassen Sie uns das zusammen mit dem @ToString-Annotationsbeispiel verstehen.
  • Durch Annotieren des Bezeichnungsfelds mit @ToString(exclude = {“designation”})
  • Lombok schließt es von der Aufnahme in die von @ToString generierte toString()-Methode aus. Dies kann nützlich sein, wenn Sie die Anzeige bestimmter Felder in der Zeichenfolgendarstellung eines Objekts vermeiden möchten.

2. EqualAndHashCode-Generierung

  • In Java sind equal() und hashCode() zwei Methoden, die häufig zum Implementieren der Objektgleichheit bzw. der Hash-Code-Generierung verwendet werden.
  • equals()-Methode: Die equal()-Methode wird verwendet, um zwei Objekte auf Gleichheit zu vergleichen. Standardmäßig vergleicht die von der Object-Klasse bereitgestellte Methode equal() Objektreferenzen, was bedeutet, dass sie nur dann „true“ zurückgibt, wenn die beiden verglichenen Objekte dieselbe Instanz im Speicher sind. Allerdings ist es oft notwendig, die Methode equal() in benutzerdefinierten Klassen zu überschreiben, um einen sinnvollen Begriff der Gleichheit basierend auf Objektattributen zu definieren.
  • hashCode()-Methode: Die hashCode()-Methode wird verwendet, um einen Hash-Codewert für ein Objekt zu generieren. Ein Hash-Code ist ein ganzzahliger Wert, der den Zustand eines Objekts darstellt und normalerweise in Hash-basierten Datenstrukturen wie Hash-Tabellen verwendet wird. Die Methode hashCode() ist wichtig, da sie das effiziente Speichern und Abrufen von Objekten in Hash-basierten Sammlungen ermöglicht.
  • In unserem Beispiel haben wir die Methode equal() manuell implementiert und überschrieben, um die Felder zweier Profile-Objekte auf Gleichheit zu vergleichen, und die Methode hashCode(), um einen Hash-Code basierend auf den Feldern zu generieren.
  • Wir verwenden die Methode Objects.equals() aus der Klasse java.util.Objects, um die Felder auf Gleichheit zu vergleichen, und die Methode Objects.hash(), um den Hash-Code zu generieren.

Ohne Verwendung der EqualAndHashCode-Anmerkungsfunktion

  • Die Annotation @EqualsAndHashCode generiert die Methoden equal() und hashCode() basierend auf den Feldern der Klasse.
  • Mit dieser Annotation generiert Lombok die Methoden equal() und hashCode() unter Verwendung aller Felder der Klasse.
  • Dadurch entfällt die Notwendigkeit einer manuellen Implementierung dieser Methoden, wodurch der Boilerplate-Code reduziert und die Wartbarkeit des Codes verbessert wird.

3. Datenanmerkungen
Ohne @data-Annotationen müssen wir die Getter-, Setter- und Konstruktorfunktionen manuell in unseren Code implementieren.

  • Ohne Verwendung der Datenanmerkungsfunktion

  • Die @data-Annotation ist eine praktische Verknüpfung, die @Getter, @setter, @NoArgsConstructor, @AllArgsConstructor, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode und viele weitere Annotationen bündelt.

  • Mithilfe von @data generiert Lombok diese Methoden automatisch für uns basierend auf den in der Klasse deklarierten Feldern. Dadurch wird die Menge an Boilerplate-Code, die wir schreiben und pflegen müssen, erheblich reduziert, wodurch unser Code prägnanter und lesbarer wird.

  1. BuilderPattern
  • Um auf unser Profilbeispiel zurückzukommen: Das Erstellen einer neuen Instanz erfordert die Verwendung eines Konstruktors mit potenziell zahlreichen Argumenten, eine Aufgabe, die umständlich wird, wenn wir der Klasse zusätzliche Attribute hinzufügen.
  • Glücklicherweise bietet Lombok mit seiner @builder-Funktion eine robuste Lösung, die die Nutzung des Builder-Musters zum Erstellen neuer Instanzen erleichtert. Integrieren wir diese Funktion in unsere Profilklasse.

Paket org.example.dataobjects;

Lombok importieren.*;

@Getter
@setter
@NoArgsConstructor
@AllArgsConstructor
@RequiredArgsConstructor
@ToString(exclude = {"designation"})
@EqualsAndHashCode
@builder
@data
öffentliches Klassenprofil {
privater String Vorname;
privater String lastName;
private String-Bezeichnung;
privates Int-Alter;

public static void main(String[] args) {

// Erstellen einer Profilinstanz mit dem Builder
Profilprofil = Profile.builder()
.firstName("Parth")
.lastName("Kathrotiya")
.designation("QA Automation Engineer")
.age(23)
.build();
}
}

Delombok

  • Delombok ist ein von Project Lombok bereitgestelltes Tool, das die Auswirkungen von Lomboks Anmerkungen umkehrt und Ihren Code im Wesentlichen „delombokifiziert“. Es ermöglicht Ihnen, Java-Quellcode, der Lombok-Anmerkungen enthält, in einfachen Java-Code zu konvertieren, indem Sie die Anmerkungen erweitern und durch den entsprechenden Boilerplate-Code ersetzen, den sie generieren würden.
  • Der Hauptzweck von Delombok besteht darin, die Kompatibilität und Interoperabilität mit Umgebungen oder Tools zu erleichtern, die Lombok-Annotationen nicht direkt unterstützen. Wenn Sie beispielsweise Ihren Code mit Entwicklern teilen müssen, die Lombok nicht in ihrer Entwicklungsumgebung installiert haben, oder wenn Sie Lombok-annotierten Code mit Tools analysieren oder umgestalten möchten, die Lombok-Annotationen nicht verstehen, können Sie zum Konvertieren Delombok verwenden den Code in eine Form zu bringen, die in diesen Kontexten verständlich und verwendbar ist.
  • Delombok kann über die Befehlszeile aufgerufen oder in Build-Tools wie Maven oder Gradle integriert werden. Wenn Sie Delombok für Ihren Quellcode ausführen, verarbeitet es die Java-Dateien, erweitert die Lombok-Annotationen und generiert neue Java-Dateien ohne Lombok-Annotationen. Der resultierende Code entspricht funktional dem Originalcode, jedoch ohne Abhängigkeit von Lombok.
  • Insgesamt ist Delombok ein nützliches Tool von Project Lombok, das die Interoperabilität und Wartbarkeit von Codebasen mithilfe von Lombok-Annotationen verbessert und es Entwicklern ermöglicht, die Vorteile von Lombok zu nutzen und gleichzeitig die Kompatibilität mit einer Vielzahl von Entwicklungsumgebungen und Tools sicherzustellen.

Abschluss

Während dieser Beitrag die Funktionen hervorhebt, die ich am vorteilhaftesten fand, bietet Lombok eine Fülle zusätzlicher Funktionalitäten und Anpassungen.
Die Dokumentation von Lombok ist eine unschätzbar wertvolle Ressource und bietet ausführliche Erklärungen und Beispiele für jede Anmerkung. Wenn Sie an diesem Beitrag interessiert sind, empfehle ich Ihnen dringend, tiefer in die Dokumentation von Lombok einzutauchen, um noch mehr Möglichkeiten zu entdecken.
Darüber hinaus bietet die Projektseite umfassende Anleitungen zur Integration von Lombok in verschiedene Programmierumgebungen. Unabhängig davon, ob Sie Eclipse, NetBeans, IntelliJ oder andere verwenden, können Sie sicher sein, dass Lombok sich nahtlos in Ihren Workflow integrieren lässt. Als jemand, der häufig zwischen IDEs wechselt, kann ich Lomboks Vielseitigkeit und Zuverlässigkeit auf allen Plattformen bestätigen.
Insgesamt bietet Project Lombok einen umfassenden Satz an Funktionen, die die Java-Entwicklung rationalisieren, die Ausführlichkeit des Codes reduzieren und Best Practices fördern.
Project Lombok bietet eine umfassende Reihe von Funktionen, die Java-Tests optimieren, die Ausführlichkeit des Codes reduzieren und Best Practices fördern. Durch die Einbindung von Lombok-Buildern und Lombok-Konstruktoren können Tester ihren Code weiter vereinfachen und die Wartbarkeit verbessern.

Das obige ist der detaillierte Inhalt vonLombok Unleashed: Steigerung der Java-Effizienz mit Gettern, Settern, Konstruktoren, Buildern und mehr. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn