Rumah Java javaTutorial Projek Lombok di Jawa

Projek Lombok di Jawa

Jan 08, 2025 pm 10:24 PM

Proyecto Lombok en Java

pengenalan

Lombok ialah perpustakaan yang bertindak sebagai pemproses anotasi untuk Java, direka untuk menghapuskan lebihan dalam kod. Fungsi utamanya adalah untuk mengautomasikan penjanaan kod berulang atau "boilerplate" - elemen yang, walaupun perlu, tidak menambah nilai langsung kepada logik program kami. Terutamanya, ia digunakan untuk penjanaan automatik pada masa penyusunan kaedah getter dan setter, pembina, equals(), hashCode(), toString(), kaedah, antara elemen biasa lain dalam kelas Java.

Daripada menulis berdozen baris kod secara manual untuk fungsi asas ini, Lombok membenarkan anda mentakrifkannya menggunakan anotasi mudah, menghasilkan kod yang lebih bersih, lebih boleh diselenggara dan kurang terdedah kepada ralat.

Kemudahan

Untuk menggunakan Lombok dalam projek Java, anda perlu menambah kebergantungan yang sepadan dalam fail pom.xml (sekiranya projek Maven) atau build.gradle (dalam kes projek Gradle), sebagai tambahan kepada pemasangan pemalam yang sepadan dalam IDE yang kami gunakan. Semasa siaran ini, kami akan menggunakan Maven dan IntelliJ IDEA sebagai contoh.

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.36</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sekiranya terdapat sebarang keraguan, anda sentiasa boleh menyemak dokumentasi rasmi Lombok:

  • Lombok dengan Maven
  • Lombok dalam IntelliJ IDEA

@data

Apabila kami membuat kelas kami kerap melakukan tindakan berikut, sama ada secara manual atau dengan pintasan yang disediakan oleh IDE kami:

  • Encapsulate atribut dan jana kaedah getter dan setternya
  • Jana pembina kosong dan satu lagi yang menerima semua atribut
  • Laksanakan kaedah equals(), hashCode() dan toString().

Nah, Lombok mempunyai anotasi @Data yang membolehkan kami melakukan semua ini dalam satu baris, menjana semua yang berkaitan dengan POJO (Objek Java Lama Biasa). Anotasi ini ialah gabungan anotasi @Getter, @Setter, @EqualsAndHashCode, @NoArgsConstructor dan @AllArgsConstructor yang akan kita lihat kemudian.

import lombok.Data;

@Data
public class Persona {
    private String nombre;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
public class Main {
    public static void main(String[] args) {
        Persona p1 = new Persona();
        p2.setNombre("Maria");

        System.out.println(p1.getNombre());
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

@NoArgsConstructor, @AllArgsConstructor dan @RequiredArgsConstructor

Anotasi ini membolehkan kami menjana pembina secara automatik dengan gabungan argumen yang berbeza, memandangkan atribut digunakan mengikut susunan ia diisytiharkan dalam kelas.

  • @NoArgsConstructor: Menjana pembina tanpa hujah (kosong), jika tidak mungkin untuk menjana satu, pengecualian akan dilemparkan, untuk mengelakkan ini hanya gunakan anotasi seperti berikut @NoArgsConstructor(force = true).
  • @AllArgsConstructor: Menghasilkan pembina dengan semua atribut kelas sebagai argumen.
  • @RequiredArgsConstructor: Menghasilkan pembina untuk semua medan akhir dan/atau ditandakan dengan anotasi @NonNull.
<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.36</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

@Getter dan @setter

Anotasi ini membolehkan kami menjana kaedah pengambil dan penetap secara automatik untuk semua atribut kelas, atau hanya untuk yang ditandakan dengan anotasi yang sepadan, iaitu, ia boleh digunakan pada peringkat kelas atau atribut.

import lombok.Data;

@Data
public class Persona {
    private String nombre;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
public class Main {
    public static void main(String[] args) {
        Persona p1 = new Persona();
        p2.setNombre("Maria");

        System.out.println(p1.getNombre());
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

@ToString

Anotasi ini menjana kaedah toString() secara automatik, yang mengembalikan perwakilan rentetan kelas dan atributnya dengan format berikut: ClassName(attribute1=value1, attribute2=value2, ...). Secara lalai semua atribut bukan statik kelas disertakan dalam hasilnya, tetapi atribut khusus boleh dikecualikan menggunakan atribut @ToString.Exclude. Sekiranya anda hanya mahu memaparkan nilai atribut dan bukan nama seperti yang diisytiharkan, anda boleh menggunakan @ToString(includeFieldNames = false).

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Persona {
    private String nombre;
}
Salin selepas log masuk
Salin selepas log masuk

@EqualsAndHashCode

Membolehkan anda menjana kaedah equals() dan hashCode() daripada semua atribut kelas Jika anda ingin mengecualikan atau menyertakan atribut, anda boleh melakukannya menggunakan anotasi @EqualsAndHashCode.Exclude dan @EqualsAndHashCode.Include. masing-masing.

import lombok.*;

@Getter
@Setter
public class Persona {
    private String nombre;
    private String apellido;
}
Salin selepas log masuk
Salin selepas log masuk

@Nilai

Sebelum ini di Java untuk mencipta kelas tidak berubah, satu siri langkah perlu dijalankan, seperti menjadikan kelas dan/atau atribut daripada jenis terakhir dan kaedah penetap tidak akan dihasilkan. Lombok memudahkan kami mencipta kelas tidak berubah menggunakan anotasi @Value, yang menggabungkan anotasi @Getter, @ToString, @EqualsAndHashCode dan @AllArgsConstructor untuk menjana kelas tidak berubah. Semua atribut ditandakan sebagai muktamad peribadi dan kaedah penetap tidak dijana. Ia ialah varian @Data yang tidak boleh diubah.

import lombok.*;

public class Persona {
    @Getter @Setter
    private String nombre;
    private String apellido;
}
Salin selepas log masuk
Salin selepas log masuk

Dalam versi Java terkini anotasi ini kehilangan makna berbanding penggunaan Rekod, kerana ia mempunyai tujuan yang sama, dan lebih praktikal untuk menggunakan rekod. Jika anda berminat untuk mengetahui lebih lanjut tentang topik ini, terdapat lebih banyak catatan di blog tentang rekod.

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.36</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

@val

Anotasi ini membolehkan kami mengisytiharkan pembolehubah sebagai muktamad dan membuat kesimpulan secara automatik jenis datanya, iaitu, tidak perlu menentukan jenis data pembolehubah, Lombok mengambil kira membuat kesimpulan. Ia berguna sekiranya jenis data pembolehubah sangat panjang atau kompleks, dengan cara ini anda mengelak daripada mengulanginya.

import lombok.Data;

@Data
public class Persona {
    private String nombre;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Anotasi ini mungkin kehilangan makna jika kita terus menggunakan var akhir atau hanya var untuk jenis inferens, yang lebih mudah kerana ia merupakan ciri bahasa. Jika anda berminat untuk mengetahui lebih lanjut mengenai perkara ini, anda boleh rujuk post berikut

public class Main {
    public static void main(String[] args) {
        Persona p1 = new Persona();
        p2.setNombre("Maria");

        System.out.println(p1.getNombre());
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

@var

Ia berfungsi sama seperti @val, tetapi ia tidak mengisytiharkan pembolehubah sebagai muktamad, ia hanya menyimpulkan jenisnya. Adalah perlu untuk mempertimbangkan konsep jenis inferens, kerana anda tidak boleh mengisytiharkan sesuatu jenis String dan kerana ia tidak muktamad untuk memberikannya nilai jenis int. Sekali lagi, anotasi ini digantikan dengan var dalam versi Java terkini.

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Persona {
    private String nombre;
}
Salin selepas log masuk
Salin selepas log masuk

@NonNull

Anotasi ini boleh digunakan pada atribut kelas dan parameter kaedah, ia pada asasnya menunjukkan bahawa nilai atribut tidak boleh batal, sekiranya percubaan dibuat untuk memberikan nilai nol kepada atribut yang ditandakan dengan @NonNull ia akan dilemparkan NullPointerException, iaitu, jika (param == null) buang NullPointerException baru("param ditanda bukan nol tetapi adalah nol"); Tanpa mengira pengecualian yang dijananya, penggunaannya lebih ketara dalam IDE itu sendiri, kerana ia akan menunjukkan kepada kita dalam beberapa cara bahawa nilai ini tidak boleh batal.

import lombok.*;

@Getter
@Setter
public class Persona {
    private String nombre;
    private String apellido;
}
Salin selepas log masuk
Salin selepas log masuk

@Pembersihan

Anotasi ini membolehkan kami memastikan bahawa mana-mana sumber yang menggunakannya jika ia mempunyai kaedah close() atau yang melaksanakan antara muka AutoCloseable atau Closeable ditutup secara automatik pada penghujung blok kod di mana ia berada. Ia berguna sekiranya bekerja dengan sumber yang perlu dikeluarkan, seperti fail, sambungan ke pangkalan data, dsb.

import lombok.*;

public class Persona {
    @Getter @Setter
    private String nombre;
    private String apellido;
}
Salin selepas log masuk
Salin selepas log masuk

Hasil ini boleh diperoleh secara manual jika kita menggunakan percubaan dengan sumber.

import lombok.*;

@AllArgsConstructor
@ToString
public class Persona {
    private String nombre;
    @ToString.Exclude
    private String apellido;
}

// Output: Persona(nombre=Maria)
Salin selepas log masuk

@pembina

Anotasi ini membolehkan kami menjana corak reka bentuk Pembina secara automatik, iaitu objek yang membolehkan kami membina objek kompleks langkah demi langkah, supaya atribut objek yang berbeza boleh dikonfigurasikan tanpa perlu panggil pembina dengan banyak parameter. Ia berguna sekiranya kelas mempunyai banyak atribut dan kami tidak mahu mempunyai pembina dengan banyak parameter.

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.36</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

@Dengan

Anotasi ini membolehkan kami mencipta kaedah yang mengembalikan salinan objek semasa dengan atribut yang diubah suai, iaitu, ia menghasilkan kaedah denganAttributeName(objek objek) yang membolehkan kami membuat salinan objek semasa dengan objek atribut diubah suai oleh nilai yang kami luluskan sebagai hujah. Ia berguna sekiranya kita ingin mengubah suai atribut objek tanpa mengubah suai objek asal.

import lombok.Data;

@Data
public class Persona {
    private String nombre;
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
public class Main {
    public static void main(String[] args) {
        Persona p1 = new Persona();
        p2.setNombre("Maria");

        System.out.println(p1.getNombre());
    }
}
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk
Salin selepas log masuk

Sehingga ini kami telah melihat beberapa anotasi yang boleh digunakan paling kerap, setiap satu daripada ini mungkin atau mungkin tidak menerima konfigurasi tambahan, begitu juga terdapat yang lain yang ditandakan sebagai percubaan, dalam apa jua keadaan. Adalah penting untuk berunding dokumentasi rasmi untuk memanfaatkan sepenuhnya semua ciri yang Lombok tawarkan kepada kami dan kelebihan berkenaan penjanaan kod berulang.

Atas ialah kandungan terperinci Projek Lombok di Jawa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

<🎜>: Bubble Gum Simulator Infinity - Cara Mendapatkan dan Menggunakan Kekunci Diraja
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Nordhold: Sistem Fusion, dijelaskan
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Mandragora: Whispers of the Witch Tree - Cara Membuka Kunci Cangkuk Bergelut
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial Java
1665
14
Tutorial PHP
1270
29
Tutorial C#
1249
24
Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Adakah perisian keselamatan syarikat menyebabkan aplikasi gagal dijalankan? Bagaimana cara menyelesaikan masalah dan menyelesaikannya? Apr 19, 2025 pm 04:51 PM

Penyelesaian masalah dan penyelesaian kepada perisian keselamatan syarikat yang menyebabkan beberapa aplikasi tidak berfungsi dengan baik. Banyak syarikat akan menggunakan perisian keselamatan untuk memastikan keselamatan rangkaian dalaman. …

Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Bagaimanakah saya menukar nama kepada nombor untuk melaksanakan penyortiran dan mengekalkan konsistensi dalam kumpulan? Apr 19, 2025 pm 11:30 PM

Penyelesaian untuk menukar nama kepada nombor untuk melaksanakan penyortiran dalam banyak senario aplikasi, pengguna mungkin perlu menyusun kumpulan, terutama dalam satu ...

Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Bagaimana untuk memudahkan isu pemetaan medan dalam dok sistem menggunakan mapstruct? Apr 19, 2025 pm 06:21 PM

Pemprosesan pemetaan medan dalam dok sistem sering menemui masalah yang sukar ketika melaksanakan sistem dok: bagaimana untuk memetakan medan antara muka sistem dengan berkesan ...

Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Bagaimanakah Idea IntelliJ mengenal pasti nombor port projek boot musim bunga tanpa mengeluarkan log? Apr 19, 2025 pm 11:45 PM

Mula musim bunga menggunakan versi IntelliJideaultimate ...

Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Bagaimana dengan elegan mendapatkan nama pemboleh ubah kelas entiti untuk membina keadaan pertanyaan pangkalan data? Apr 19, 2025 pm 11:42 PM

Apabila menggunakan Mybatis-Plus atau Rangka Kerja ORM yang lain untuk operasi pangkalan data, sering diperlukan untuk membina syarat pertanyaan berdasarkan nama atribut kelas entiti. Sekiranya anda secara manual setiap kali ...

Bagaimana cara menukar objek Java dengan selamat ke array? Bagaimana cara menukar objek Java dengan selamat ke array? Apr 19, 2025 pm 11:33 PM

Penukaran objek dan tatasusunan Java: Perbincangan mendalam tentang risiko dan kaedah penukaran jenis cast yang betul Banyak pemula Java akan menemui penukaran objek ke dalam array ...

Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Platform e-dagang SKU dan Reka Bentuk Pangkalan Data SPU: Bagaimana untuk mengambil kira kedua-dua atribut yang ditakrifkan oleh pengguna dan produk yang tidak berkesudahan? Apr 19, 2025 pm 11:27 PM

Penjelasan terperinci mengenai reka bentuk jadual SKU dan SPU di platform e-dagang Artikel ini akan membincangkan isu reka bentuk pangkalan data SKU dan SPU dalam platform e-dagang, terutamanya bagaimana menangani jualan yang ditentukan pengguna ...

Bagaimana menggunakan penyelesaian cache Redis untuk merealisasikan keperluan senarai kedudukan produk dengan cekap? Bagaimana menggunakan penyelesaian cache Redis untuk merealisasikan keperluan senarai kedudukan produk dengan cekap? Apr 19, 2025 pm 11:36 PM

Bagaimanakah penyelesaian caching Redis menyedari keperluan senarai kedudukan produk? Semasa proses pembangunan, kita sering perlu menangani keperluan kedudukan, seperti memaparkan ...

See all articles