Menggunakan Lombok's @Getter for Boolean Fields

1. Pengenalan

Project Lombok adalah perpustakaan yang popular untuk mengurangkan plat boiler Java.

Dalam tutorial ringkas ini, kita akan melihat bagaimana penjelasan @Getter Lombok berfungsi di medan boolean untuk menghilangkan keperluan untuk membuat kaedah mendapatkan yang sesuai.

2. Ketergantungan Maven

Mari mulakan dengan menambahkan Project Lombok ke pom.xml kami :

 org.projectlombok lombok 1.18.10 

3. Menggunakan @Getter di Medan boolean

Katakanlah kita mahu Lombok menghasilkan kaedah aksesor untuk bidang boolean peribadi kita.

Kami dapat memberi penjelasan bidang itu dengan @Getter :

@Getter private boolean running;

Dan Lombok akan menggunakan pemproses anotasinya untuk menghasilkan kaedah isRunning () di kelas.

Dan sekarang, kita boleh merujuknya, walaupun kita sendiri tidak menulis kaedahnya:

@Test public void whenBasicBooleanField_thenMethodNamePrefixedWithIsFollowedByFieldName() { LombokExamples lombokExamples = new LombokExamples(); assertFalse(lombokExamples.isRunning()); }

3.1. A boolean Field Mempunyai Nama Sama seperti Its Accessor

Mari tambahkan baris kod lain untuk menjadikan contohnya agak rumit:

@Getter private boolean isRunning = true;

Akan agak membebankan jika Lombok membuat kaedah yang disebut isIsRunning .

Sebaliknya, Lombok mencipta isRunning seperti sebelumnya:

@Test public void whenBooleanFieldPrefixedWithIs_thenMethodNameIsSameAsFieldName() { LombokExamples lombokExamples = new LombokExamples(); assertTrue(lombokExamples.isRunning()); }

3.2. Dua Medan boolean Dengan Nama Aksesor Yang Sama

Kadang kala, boleh berlaku konflik.

Katakan bahawa kita perlu mempunyai baris berikut dalam kelas yang sama:

 @Getter public boolean running = true; @Getter public boolean isRunning = false;

Terdapat banyak sebab untuk mengelakkan konvensyen penamaan yang membingungkan seperti ini. Salah satunya ialah ia menimbulkan konflik bagi Lombok.

Menggunakan konvensyen Lombok, kedua bidang ini akan mempunyai nama kaedah aksesor yang sama : isRunning . Tetapi mempunyai dua kaedah dengan nama yang sama di kelas yang sama akan mewujudkan kesalahan penyusun.

Lombok menyelesaikannya dengan membuat hanya satu kaedah aksesor dan, dalam kes ini, menunjukkannya semasa berjalan, berdasarkan perintah pengisytiharan lapangan:

@Test public void whenTwoBooleanFieldsCauseNamingConflict_thenLombokMapsToFirstDeclaredField() { LombokExamples lombokExamples = new LombokExamples(); assertTrue(lombokExamples.isRunning() == lombokExamples.running); assertFalse(lombokExamples.isRunning() == lombokExamples.isRunning); }

4. Menggunakan @Getter di Boolean Field

Sekarang, Lombok memperlakukan jenis Boolean sedikit berbeza.

Mari cuba contoh berjalan yang sama untuk kali terakhir, tetapi dengan Boolean bukan jenis primitif:

@Getter private Boolean running;

Daripada membuat isRunning , Lombok akan menghasilkan getRunning :

@Test public void whenFieldOfBooleanType_thenLombokPrefixesMethodWithGetInsteadOfIs() { LombokExamples lombokExamples = new LombokExamples(); assertTrue(lombokExamples.getRunning()); }

5. Kesimpulan

Dalam artikel ini, kami meneroka cara menggunakan anotasi @Getter Lombok untuk primitif boolean dan objek Boolean.

Dan pastikan untuk melihat sampel di Github.