Heim >Java >javaLernprogramm >Verstehen Sie den Unterschied zwischen @RequiredArgsConstructor, @AllArgsConstructor und @NoArgsConstructor in Lombok
Lombok vereinfacht die Erstellung von Java-Konstruktoren, indem es sie zur Kompilierungszeit generiert. In diesem Leitfaden werden drei wichtige Lombok-Anmerkungen erläutert: @NoArgsConstructor
, @AllArgsConstructor
und @RequiredArgsConstructor
.
1.1 @NoArgsConstructor
: Diese Annotation generiert einen Konstruktor ohne Argumente. Nützlich zum Erstellen von Klasseninstanzen ohne Angabe von Anfangswerten. Zum Beispiel:
<code class="language-java">import lombok.NoArgsConstructor; @NoArgsConstructor public class Example {}</code>
Lombok erstellt einen Konstruktor, der public Example() {}
entspricht.
1.2 @AllArgsConstructor
: Dies generiert einen Konstruktor, der ein Argument für jedes Klassenfeld akzeptiert. Ideal zum Initialisieren aller Felder bei der Objekterstellung. Beispiel:
<code class="language-java">import lombok.AllArgsConstructor; @AllArgsConstructor public class Person { private String name; private int age; }</code>
Lombok schafft public Person(String name, int age) { ... }
.
1.3 @RequiredArgsConstructor
: Dadurch wird ein Konstruktor für alle final
-Felder und mit @NonNull
annotierten Felder generiert. Stellt sicher, dass wichtige Felder immer initialisiert werden. Beispiel:
<code class="language-java">import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class Person { private final String name; private int age; }</code>
Lombok generiert public Person(String name) { ... }
, weil name
final
ist.
Die beste Anmerkung hängt von Ihren spezifischen Anforderungen ab:
2.1 @NoArgsConstructor
Anwendungsfälle: Verwenden Sie diese Option, wenn Sie einen Konstruktor ohne Argumente benötigen, der häufig von Frameworks wie Hibernate für Entitätsklassen benötigt wird. Zum Beispiel:
<code class="language-java">@NoArgsConstructor @Entity public class User { @Id private Long id; private String username; }</code>
2.2 @AllArgsConstructor
Anwendungsfälle: Wird verwendet, wenn alle Felder während der Objekterstellung initialisiert werden müssen. Beispiel:
<code class="language-java">@AllArgsConstructor public class Order { private String orderId; private String product; private int quantity; }</code>
Dies ermöglicht Order order = new Order("123", "Laptop", 2);
2.3 @RequiredArgsConstructor
Anwendungsfälle: Wird verwendet, um die Initialisierung wesentlicher (häufig final
oder @NonNull
) Felder zu gewährleisten. Nützlich für die Abhängigkeitsinjektion in Serviceklassen:
<code class="language-java">@RequiredArgsConstructor public class CustomerService { private final CustomerRepository repository; private final NotificationService notificationService; }</code>
Dadurch wird sichergestellt, dass repository
und notificationService
beim Erstellen von CustomerService
initialisiert werden.
Die Beherrschung dieser Lombok-Annotationen führt zu saubererem, besser wartbarem Java-Code. Die Wahl hängt von den Anforderungen Ihres Projekts an die Objektinitialisierung und Framework-Kompatibilität ab. Weitere Einzelheiten finden Sie unter: Den Unterschied zwischen @RequiredArgsConstructor, @AllArgsConstructor und @NoArgsConstructor in Lombok verstehen
Das obige ist der detaillierte Inhalt vonVerstehen Sie den Unterschied zwischen @RequiredArgsConstructor, @AllArgsConstructor und @NoArgsConstructor in Lombok. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!