Rumah >Java >javaTutorial >Fahami Perbezaan Antara @RequiredArgsConstructor, @AllArgsConstructor dan @NoArgsConstructor di Lombok

Fahami Perbezaan Antara @RequiredArgsConstructor, @AllArgsConstructor dan @NoArgsConstructor di Lombok

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-24 00:09:10528semak imbas

Lombok memudahkan penciptaan pembina Java dengan menjananya pada masa penyusunan. Panduan ini menerangkan tiga anotasi utama Lombok: @NoArgsConstructor, @AllArgsConstructor dan @RequiredArgsConstructor.

1. Anotasi Pembina Lombok

Understand the Difference Between @RequiredArgsConstructor, @AllArgsConstructor, and @NoArgsConstructor in Lombok

1.1 @NoArgsConstructor: Anotasi ini menjana pembina tanpa hujah. Berguna untuk mencipta contoh kelas tanpa memberikan sebarang nilai awal. Contohnya:

<code class="language-java">import lombok.NoArgsConstructor;

@NoArgsConstructor
public class Example {}</code>

Lombok mencipta pembina bersamaan dengan public Example() {}.

1.2 @AllArgsConstructor: Ini menjana pembina yang mengambil satu hujah untuk setiap medan kelas. Ideal untuk memulakan semua medan pada penciptaan objek. Contoh:

<code class="language-java">import lombok.AllArgsConstructor;

@AllArgsConstructor
public class Person {
    private String name;
    private int age;
}</code>

Lombok mencipta public Person(String name, int age) { ... }.

1.3 @RequiredArgsConstructor: Ini menjana pembina untuk semua final medan dan medan beranotasi dengan @NonNull. Memastikan medan penting sentiasa dimulakan. Contoh:

<code class="language-java">import lombok.RequiredArgsConstructor;

@RequiredArgsConstructor
public class Person {
    private final String name;
    private int age;
}</code>

Lombok menjana public Person(String name) { ... } kerana name ialah final.

2. Memilih Anotasi yang Tepat

Anotasi terbaik bergantung pada keperluan khusus anda:

2.1 @NoArgsConstructor Kes Penggunaan: Gunakan apabila anda memerlukan pembina tanpa hujah, selalunya diperlukan oleh rangka kerja seperti Hibernate untuk kelas entiti. Contohnya:

<code class="language-java">@NoArgsConstructor
@Entity
public class User {
    @Id
    private Long id;
    private String username;
}</code>

2.2 @AllArgsConstructor Kes Penggunaan: Gunakan apabila semua medan memerlukan permulaan semasa penciptaan objek. Contoh:

<code class="language-java">@AllArgsConstructor
public class Order {
    private String orderId;
    private String product;
    private int quantity;
}</code>

Ini membolehkan Order order = new Order("123", "Laptop", 2);

2.3 @RequiredArgsConstructor Kes Penggunaan: Gunakan untuk menjamin permulaan medan penting (selalunya final atau @NonNull). Berguna untuk suntikan pergantungan dalam kelas perkhidmatan:

<code class="language-java">@RequiredArgsConstructor
public class CustomerService {
    private final CustomerRepository repository;
    private final NotificationService notificationService;
}</code>

Ini memastikan repository dan notificationService dimulakan apabila mencipta CustomerService.

3. Kesimpulan

Menguasai anotasi Lombok ini membawa kepada kod Java yang lebih bersih dan boleh diselenggara. Pilihan bergantung pada keperluan projek anda untuk permulaan objek dan keserasian rangka kerja. Untuk butiran lanjut, lihat: Fahami Perbezaan Antara @RequiredArgsConstructor, @AllArgsConstructor dan @NoArgsConstructor di Lombok

Atas ialah kandungan terperinci Fahami Perbezaan Antara @RequiredArgsConstructor, @AllArgsConstructor dan @NoArgsConstructor di Lombok. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn