Pembangun Lombok dengan Setter Tersuai

1. Pengenalan

Project Lombok adalah perpustakaan Java yang popular untuk membantu mengurangkan jumlah kod boilerplate yang perlu ditulis oleh pemaju.

Dalam tutorial ini, kita akan melihat bagaimana cara kerja anotasi @Builder Lombok dan bagaimana kita dapat menyesuaikannya untuk keperluan khusus kita.

2. Ketergantungan Maven

Mari mulakan dengan menambahkan kebergantungan pada pom.xml kami :

 org.projectlombok lombok 1.18.10 

3. Anotasi Pembina Lombok

Sebelum kita melihat untuk menyesuaikan kelas pembangun Lombok yang dihasilkan, mari kita buat tinjauan ringkas bagaimana penjelasan Lombok @Builder berfungsi. Kami sudah mempunyai pengenalan penuh mengenai ciri-ciri Lombok.

The @Builder anotasi boleh digunakan untuk menjana pembina untuk kelas kami secara automatik . Sebagai contoh, kami akan menggunakan sistem pesanan di mana satu pengguna boleh menghantar mesej kepada pengguna lain. Mesejnya adalah rentetan teks sederhana atau Fail . Dengan menggunakan Lombok, kami dapat menentukan kelas Mesej kami seperti berikut:

@Builder @Data public class Message { private String sender; private String recipient; private String text; private File file; }

@Data menghasilkan semua pelat boiler yang biasanya dikaitkan dengan POJO sederhana (Objek Lama Jawa Lama): pengambilalihan untuk semua bidang, pengatur untuk semua bidang non-final, dan sesuai dengan pelaksanaan String , sama dan hashCode , dan konstruktor.

Dengan menggunakan pembangun yang dihasilkan, kami kini dapat menghasilkan contoh kelas Mesej kami :

Message message = Message.builder() .sender("[email protected]") .recipient("[email protected]") .text("How are you today?") .build();

The @Builder anotasi juga menyokong nilai-nilai lalai untuk sifat-sifat tetapi kami tidak akan pergi ke dalam itu sekarang. Harus jelas dari contoh ini bahawa anotasi @Builder cukup hebat dan boleh menggantikan banyak kod plat boiler .

4. Menyesuaikan Pembina Lombok

Bahagian sebelumnya menunjukkan bagaimana kita dapat menggunakan Lombok untuk menghasilkan kelas pembina. Tetapi mungkin ada kes di mana pembina yang dihasilkan tidak mencukupi. Dalam contoh kami, kami mempunyai kekangan bahawa mesej hanya boleh mengandungi teks atau fail. Tidak boleh mempunyai kedua-duanya. Tentu saja Lombok tidak tahu dan pembangun yang dihasilkan dengan senang hati akan membiarkan kita masuk ke keadaan haram itu.

Nasib baik kita dapat mengatasi masalah ini dengan menyesuaikan pembangunnya.

Menyesuaikan pembangun Lombok adalah mudah dan mudah: kami menulis bahagian pembangun yang ingin kami sesuaikan dan penjelasan Lombok @Builder tidak akan menghasilkan bahagian tersebut . Jadi dalam contoh kami, itu adalah:

public static class MessageBuilder { private String text; private File file; public MessageBuilder text(String text) { this.text = text; verifyTextOrFile(); return this; } public MessageBuilder file(File file) { this.file = file; verifyTextOrFile(); return this; } private void verifyTextOrFile() { if (text != null && file != null) { throw new IllegalStateException("Cannot send 'text' and 'file'."); } } }

Harap maklum bahawa kami tidak perlu menyatakan anggota pengirim dan penerima , atau kaedah pembangun yang berkaitan dengannya. Lombok masih akan menghasilkannya untuk kita.

Sekiranya kita cuba menghasilkan contoh Mesej dengan teks dan fail dengan kod berikut:

Message message = Message.builder() .sender("[email protected]") .recipient("[email protected]") .text("How are you today?") .file(new File("/path/to/file")) .build();

Ini akan menghasilkan pengecualian berikut:

Exception in thread "main" java.lang.IllegalStateException: Cannot send 'text' and 'file'.

5. Kesimpulan

Dalam artikel ringkas ini, kami melihat bagaimana menyesuaikan pembangun Lombok.

Seperti biasa, kodnya tersedia di GitHub.