ละเว้น Setter / Getter หนึ่งตัวในลอมบอก


232

ฉันต้องการใช้คลาสข้อมูลในลอมบอก เนื่องจากมันมีเขตข้อมูลประมาณหนึ่งโหลฉันจึงใส่คำอธิบายประกอบไว้ด้วย@Dataเพื่อสร้างตัวตั้งค่าและตัวรับทั้งหมด อย่างไรก็ตามมีเขตข้อมูลพิเศษหนึ่งฟิลด์ที่ฉันไม่ต้องการให้ผู้เข้าถึงดำเนินการ

ลอมบ็อกละเว้นฟิลด์นี้อย่างไร

คำตอบ:


415

คุณสามารถส่งระดับการเข้าถึงไปที่@Getterและ@Setterคำอธิบายประกอบ สิ่งนี้มีประโยชน์ในการทำให้ getters หรือ setters ป้องกันหรือเป็นส่วนตัว นอกจากนี้ยังสามารถใช้เพื่อแทนที่ค่าเริ่มต้น

ด้วย@Dataคุณจะสามารถเข้าถึง accessors สาธารณะได้ตามค่าเริ่มต้น ตอนนี้คุณสามารถใช้ระดับการเข้าถึงพิเศษเพื่อตัดการเข้าถึงNONEอย่างสมบูรณ์เช่นนี้:

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

1
สมบูรณ์ หากฟิลด์ส่วนบุคคลเป็น POJO และใส่คำอธิบายประกอบด้วย @Delegate () มันสามารถใช้สำหรับการแยกชุดของคุณสมบัติลงในคลาสที่แยกใช้ซ้ำได้ สิ่งนี้อาจมีประโยชน์สำหรับการมีชุดคุณสมบัติเดียวกันที่ใช้กับหลายคลาส (ชนิดของ mixin สำหรับการเพิ่มคุณสมบัติ) ตัวอย่างเช่น mixin ที่แสดงถึงชุดของคุณลักษณะที่อาจนำไปใช้กับการสร้างแบบจำลองขององค์ประกอบ XML ต่างๆ
xorcus

คุณมีสิ่งที่คล้ายกันในการละเว้นเขตข้อมูลหนึ่งในตัวสร้างหรือไม่
zt1983811

1
คุณหมายถึงแอตทริบิวต์ไม่ควรปรากฏในเครื่องมือสร้างหรือไม่ ไม่ไม่มีอะไรโดยตรงสำหรับสิ่งนี้ จำไว้ว่า@Builderสามารถใส่ฟังก์ชั่นและตัวสร้างรวมทั้งคลาสและเสนอการตั้งค่าคุณลักษณะเหล่านั้นที่เกิดขึ้นในลายเซ็นของฟังก์ชันนั้นเท่านั้น
Michael Piefel

มันไม่ใช้ setter และ getter ใด ๆ สำหรับคุณสมบัตินี้ที่ @Data มี setters และ getters เป็นค่าเริ่มต้น AccessLevel.NONEซึ่งจะได้รับการยกเว้นจากการกล่าวขวัญ
ราม

41

ตามคำอธิบายของ @Dataคุณสามารถใช้:

ตัวรับและตัวสร้างที่สร้างขึ้นทั้งหมดจะเป็นแบบสาธารณะ หากต้องการแทนที่ระดับการเข้าถึงให้ทำหมายเหตุประกอบฟิลด์หรือคลาสด้วยคำอธิบายประกอบ @Setter และ / หรือ @Getter อย่างชัดเจน คุณยังสามารถใช้คำอธิบายประกอบนี้ (โดยรวมกับ AccessLevel.NONE) เพื่อไม่ให้มีการสร้าง getter และ / หรือ setter ทั้งหมด


-3

หากคุณมีสุนัขเซทเทอร์และทะเยอทะยานเป็นส่วนตัวมันจะปรากฏขึ้นในการตรวจสอบ PMD

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.