Menghilangkan satu Setter / Getter di Lombok

232

Saya ingin menggunakan kelas data di Lombok. Karena memiliki sekitar selusin bidang, saya memberi catatan @Datauntuk menghasilkan semua setter dan pengambil. Namun ada satu bidang khusus yang saya tidak ingin accessors diimplementasikan

Bagaimana Lombok menghilangkan bidang ini?

DerMike
sumber

Jawaban:

415

Anda dapat melewati tingkat akses ke @Getterdan@Setter anotasi. Ini berguna untuk membuat getter atau seter terlindungi atau pribadi. Itu juga dapat digunakan untuk mengganti default.

Dengan @Data, Anda memiliki akses publik ke pengakses secara default. Anda sekarang dapat menggunakan level akses khusus NONEuntuk sepenuhnya menghilangkan accessor, seperti ini:

@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
private int mySecret;
Michael Piefel
sumber
1
Sempurna. Jika bidang pribadi adalah POJO dan juga beranotasi dengan @Delegate (), ini bisa digunakan untuk mengekstraksi sekumpulan properti ke dalam kelas reusable yang terpisah. Ini mungkin berguna untuk memiliki set properti yang sama diterapkan ke beberapa kelas (semacam mixin untuk menambahkan properti). Misalnya, mixin mewakili sekumpulan atribut yang mungkin berlaku untuk pemodelan berbagai elemen XML.
xorcus
Apakah Anda memiliki hal yang mirip dengan menghilangkan satu bidang dalam pembangun?
zt1983811
1
Maksud Anda atribut tidak boleh muncul di pembangun? Tidak, tidak ada yang langsung untuk ini. Ingatlah bahwa itu @Builderbisa diletakkan pada fungsi dan konstruktor serta kelas, dan hanya menawarkan pengaturan atribut yang muncul dalam tanda tangan dari fungsi itu.
Michael Piefel
Itu tidak menerapkan setter dan pengambil untuk properti ini di mana @ Data termasuk setter dan getter secara default. yang akan dikecualikan dengan menyebutkan AccessLevel.NONE.
Ram
41

Menurut deskripsi Data, Anda dapat menggunakan:

Semua getter dan setter yang dihasilkan akan menjadi publik. Untuk mengganti tingkat akses, anotasi bidang atau kelas dengan @Setter eksplisit dan / atau anotasi @Getter. Anda juga dapat menggunakan anotasi ini (dengan menggabungkannya dengan AccessLevel.NONE) untuk menekan pembuatan getter dan / atau setter secara bersamaan.

Mark Rotteveel
sumber
0

Pengguna kode di bawah ini untuk menghilangkan / mengecualikan dari membuat setter dan pengambil.

@Getter(AccessLevel.NONE)
@Setter(AccessLevel.NONE)
private int mySecret;

Spring boot versi 2.3 , ini bekerja dengan baik.

Shakthifuture
sumber
-3

Jika Anda memiliki setter dan pengambil sebagai pribadi maka akan muncul dalam pemeriksaan PMD.

arpit sharma
sumber