คำถามติดแท็ก lombok

Project Lombok เป็นเครื่องมือในการลดรหัสต้นแบบใน java ผ่าน Annotations และรวบรวมการสร้างรหัสเวลา

15
การใช้โครงการลอมบอกปลอดภัยหรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน2 ปีที่ผ่านมา ในกรณีที่คุณไม่ทราบว่าโครงการลอมบอกจะช่วยให้มีบางส่วนของ annoyances ชวากับสิ่งที่ชอบสร้าง getters และ setters ด้วยคำอธิบายประกอบและแม้กระทั่งJavaBean ง่ายๆเช่นรุ่นที่มี @Data มันสามารถช่วยฉันได้จริงๆโดยเฉพาะในวัตถุเหตุการณ์ 50 ชนิดที่คุณมีเขตข้อมูลต่าง ๆ ถึง 7 แห่งที่ต้องสร้างและซ่อนตัวด้วย getters ฉันสามารถลบรหัสเกือบพันบรรทัดด้วยสิ่งนี้ อย่างไรก็ตามฉันกังวลว่าในระยะยาวมันจะเป็นการตัดสินใจที่น่าเศร้า Flamewars จะปะทุใน##Java Freenodeช่องเมื่อฉันพูดถึงการให้ข้อมูลโค้ดจะสร้างความสับสนให้กับผู้ช่วยเหลือที่เป็นไปได้ผู้คนจะบ่นเกี่ยวกับ JavaDoc ที่หายไปและผู้มอบหมายในอนาคตอาจจะลบทิ้งทั้งหมด ฉันจะสนุกกับการบวก แต่ฉันกังวลเกี่ยวกับการลบ ดังนั้น: ปลอดภัยหรือไม่ที่จะใช้ลอมบอกในโครงการใด ๆ ไม่ว่าเล็กหรือใหญ่ ผลกระทบเชิงบวกที่คุ้มค่ากับเชิงลบหรือไม่?
436 java  lombok 

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

30
ไม่สามารถรวบรวมโครงการเมื่อฉันใช้ลอมบอกภายใต้ IntelliJ IDEA
ฉันพยายามใช้ลอมบอกในโครงการของฉันที่ฉันกำลังพัฒนาโดยใช้ IntelliJ IDEA 11 ฉันได้ติดตั้งปลั๊กอินของบุคคลที่สามสำหรับ IDEAและดูเหมือนว่าทำงานได้ดีเพราะ IDEA เห็นวิธีการ / ฟิลด์ที่สร้างอัตโนมัติทั้งหมด ดังนั้นฉันจึงมีคลาสที่ใช้ Slf4j ฉันใส่คำอธิบายประกอบแบบนี้ import lombok.extern.slf4j.Slf4j; @Slf4j public class TestClass { public TestClass() { log.info("Hello!"); } } แต่เมื่อฉันสร้างคอมไพเลอร์โปรเจคของฉัน: cannot find symbol variable log. คุณช่วยเล่าสิ่งที่ฉันหายไปได้ไหม อัปเดต:ปรากฏว่าเป็นคำอธิบายประกอบของ RequestFactory ที่ล้มเหลว input files: {com.zasutki.courierApp.server.TestServlet, com.mine.courierApp.server.model.DatastoreObject} annotations: [javax.inject.Singleton, javax.inject.Inject, lombok.Getter, lombok.Setter, com.googlecode.objectify.annotation.Id, com.googlecode.objectify.annotation.OnSave] Processor com.google.web.bindery.requestfactory.apt.RfValidator matches …

13
เพิ่มในลอมบอก แต่ไม่ได้รับการยอมรับและผู้ตั้งค่าใน Intellij IDEA
ฉันใช้ IntelliJ IDEA บน Ubuntu ฉันเพิ่มlombok.jarในโครงการของฉันและติดตั้งปลั๊กอินลอมบอกสำหรับ IDEA ฉันสามารถเข้าถึงคำอธิบายประกอบ แต่gettersและsettersไม่ได้สร้างขึ้น ฉันได้รับข้อผิดพลาดเดียวกันฉันจะได้รับถ้าฉันพยายามเข้าถึงวิธี getter หรือ setter ที่ไม่มีอยู่ ฉันจะพลาดอะไรได้บ้าง

4
ลอมบอกทำงานอย่างไร
ฉันพบลอมบอกวันนี้ ฉันกังวลมากที่รู้ว่ามันทำงานอย่างไร บทความ Java Geekให้เบาะแสบางอย่าง แต่มันไม่ชัดเจนสำหรับฉัน: Java 6 ลบ apt และทำให้ javac สามารถจัดการคำอธิบายประกอบและปรับปรุงกระบวนการเพื่อให้ได้การคำนวณขั้นตอนเดียวที่ง่ายขึ้น นี่คือเส้นทางของลอมบอก บางทีด้วย Java 6 กระบวนการคอมไพล์จะเป็น: javac -> apt -> กระบวนการ lombok apt -> อ่านคลาสไฟล์และเพิ่มเมธอด set / get โดยใช้ASM ? คุณช่วยแสดงรายละเอียดเพิ่มเติมเกี่ยวกับกลไกให้ฉันดูได้ไหม
148 java  annotations  lombok 

7
วิธีการโทรหา super constructor ในลอมบอก
ฉันมีชั้นเรียน @Value @NonFinal public class A { int x; int y; } ฉันมีคลาส B อีกคน @Value public class B extends A { int z; } ลอมบ็อกเกิดข้อผิดพลาดโดยบอกว่าไม่พบตัวสร้าง A () เรียกอย่างชัดเจนว่าสิ่งที่ฉันต้องการให้ลอมบอกทำคือให้คำอธิบายประกอบกับคลาส b เพื่อให้สร้างรหัสต่อไปนี้: public class B extends A { int z; public B( int x, int y, int z) { super( x …
118 java  lombok 

23
การสร้างด้วย @ Slf4j และ Intellij ของ Lombok: ไม่พบบันทึกสัญลักษณ์
ฉันมีโครงการ maven ที่สร้างขึ้นโดยไม่มีปัญหาจากบรรทัดคำสั่ง อย่างไรก็ตามเมื่อฉันสร้างด้วย IntelliJ ฉันได้รับข้อผิดพลาด: java: FileName.java:89: cannot find symbol symbol : variable log ไม่มีบันทึกที่กำหนดหรือนำเข้าในไฟล์ java แต่มีไฟล์ @Slf4j final public class FileName { คำสั่งก่อนเนื้อหาคลาสซึ่งควรกำหนดคลาสล็อก ในหน้าต่างโครงสร้างโปรเจ็กต์คลาสสำหรับ: Maven: org.slf4j:jcl-over-slf4j:1.6.1 Maven: org.slf4j:slf4j-api:1.6.6 Maven: org.slf4j:slf4j-log4j12:1.6.6 Maven: org.slf4j:slf4j-simple:1.6.6 แสดงอยู่ภายใต้ไลบรารีและระบุว่าดาวน์โหลดแล้วและพร้อมใช้งาน มีความคิดว่าทำไมสิ่งนี้ถึงสร้างด้วย maven ผ่านทางบรรทัดคำสั่ง แต่ไม่ใช่ผ่าน IntelliJ และจะแก้ไขปัญหาได้อย่างไร

4
คำเตือนเท่ากับ / hashCode บน @Data annotation lombok พร้อมการสืบทอด
ฉันมีเอนทิตีที่สืบทอดมาจากอื่น ๆ ในทางกลับกันฉันใช้โครงการลอมบอกเพื่อลดรหัสสำเร็จรูปดังนั้นฉันจึงใส่@Dataคำอธิบายประกอบ คำอธิบายประกอบที่@Dataมีการสืบทอดจะสร้างคำเตือนถัดไป: การสร้างการใช้งานเท่ากับ / hashCode แต่ไม่มีการเรียกใช้ superclass แม้ว่าคลาสนี้จะไม่ขยาย java.lang.Object หากเป็นความตั้งใจให้เพิ่ม@EqualsAndHashCode(callSuper=false)ในประเภทของคุณ ขอแนะนำให้เพิ่มคำอธิบายประกอบ@EqualsAndHashCode (callSuper = true)หรือ@EqualsAndHashCode (callSuper = false)? ถ้าไม่ได้เพิ่มมันคืออันไหนcallSuper=falseหรือcallSuper=true?
108 java  lombok 

20
ลอมบอกไม่ได้สร้าง getter และ setter
ฉันเพิ่งพยายามส่งโครงการที่ใช้ Maven ไปยังคอมพิวเตอร์เครื่องอื่นและ HORROR เครื่องหมายสีแดงทุกที่ !! อย่างไรก็ตามการmvn clean installสร้างทำได้ดี ฉันสังเกตเห็นอย่างรวดเร็วว่าลอมบอกไม่ได้สร้าง getters และ setters สำหรับคลาสของฉันแม้ว่าEclipse จะรู้จัก@Getterและ@Setterถูกต้องก็ตาม คอมพิวเตอร์ทั้งสองเครื่องใช้ Maven เวอร์ชันเดียวกัน (3.0.4) แต่ JDK ต่างกัน (1.6_23 และ 1.6_33) ทั้งคู่ใช้ Eclipse Indigo 32 บิต คุณมีความคิดเกี่ยวกับวิธีแก้ปัญหาหรือไม่?
107 java  eclipse  maven  lombok 

2
สร้างวัตถุจากวัตถุที่มีอยู่โดยใช้ลอมบอก
สมมติว่าฉันมีคลาสที่มีคำอธิบายประกอบลอมบอกเช่น @Builder class Band { String name; String type; } ฉันรู้ว่าฉันทำได้: Band rollingStones = Band.builder().name("Rolling Stones").type("Rock Band").build(); มีวิธีง่ายๆในการสร้างวัตถุของ Foo โดยใช้วัตถุที่มีอยู่เป็นเทมเพลตและเปลี่ยนคุณสมบัติอย่างใดอย่างหนึ่งหรือไม่? สิ่งที่ต้องการ: Band nirvana = Band.builder(rollingStones).name("Nirvana"); ฉันไม่พบสิ่งนี้ในเอกสารของลอมบอก
100 java  lombok 

14
ไม่สามารถทำให้แจ็คสันและลอมบ็อกทำงานร่วมกันได้
ฉันกำลังทดลองในการรวมแจ็คสันและลอมบอก นี่คือชั้นเรียนของฉัน: package testelombok; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonProperty; import lombok.AllArgsConstructor; import lombok.Value; import lombok.experimental.Wither; @Value @Wither @AllArgsConstructor(onConstructor=@__(@JsonCreator)) public class TestFoo { @JsonProperty("xoom") private String x; private int z; } package testelombok; import com.fasterxml.jackson.databind.ObjectMapper; import com.xebia.jacksonlombok.JacksonLombokAnnotationIntrospector; import java.io.IOException; public class TestLombok { public static void main(String[] args) throws IOException { TestFoo …

2
ปลั๊กอิน lombok IntelliJ 2020.1 เข้ากันไม่ได้
ปลั๊กอินลอมบอกใน IntelliJ IDEA 2020.1 (Ultimate Edition) เข้ากันไม่ได้กับอินสแตนซ์ IDE นี้ ฉันไม่รู้ว่าเป็นปัญหาในเครื่องของฉันหรืออยู่ในเครื่องของทุกคน: มันแน่นอน? หรือว่าเป็นปัญหาชั่วคราว

3
ลอมบอกทะเยอทะยาน / setter vs Java 14 บันทึก
ฉันชอบโครงการลอมบอกแต่ในวันนี้ฉันกำลังอ่านและลองคุณสมบัติใหม่ของ java 14 ภายในความสามารถใหม่นี้มีคีย์เวิร์ดของเรกคอร์ดที่อนุญาตให้สร้างคลาสที่มีฟังก์ชันการทำงานต่อไปนี้แล้ว: คอนสตรัคเตอร์ฟิลด์สุดท้ายส่วนตัว accessors, equals / hashCode, getters, toString ตอนนี้คำถามของฉันคือดีกว่าที่จะพึ่งพาคุณสมบัติของลอมบอกหรือเราควรเริ่มใช้ฟังก์ชั่นบันทึก: ดีกว่าที่จะใช้สิ่งนี้: record Person (String name, String surname) {} หรือว่า: @AllArgsConstructor @ToString @EqualsAndHashCode public class GetterSetterExample { @Getter private int name; @Getter private int surname; } ข้อดีและข้อเสียของทั้งสองวิธีคืออะไร?
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.