JavaRush /จาวาบล็อก /Random-TH /คำอธิบายประกอบ ส่วนที่สอง ลอมบอก

คำอธิบายประกอบ ส่วนที่สอง ลอมบอก

เผยแพร่ในกลุ่ม
คำอธิบายประกอบ ส่วนที่หนึ่ง น่าเบื่อนิดหน่อย ในส่วนนี้ ฉันตัดสินใจที่จะพูดถึงห้องสมุดลอมบอกในฐานะตัวแทนที่รู้จักกันดีของคำอธิบายประกอบแหล่งที่มา พร้อมคำอธิบายประกอบรันไทม์ในบทความถัดไป กาลครั้งหนึ่งมีโปรแกรมเมอร์ Java คนหนึ่ง เขาเขียนโค้ดธรรมดาทุกวัน เช่น:
package lombok;

public class Chelovek {
    private String name;
    private int age;

    public Chelovek(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Chelovek() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;

        Chelovek chelovek = (Chelovek) o;

        if (age != chelovek.age) return false;
        return name != null ? name.equals(chelovek.name) : chelovek.name == null;
    }

    @Override
    public int hashCode() {
        int result = name != null ? name.hashCode() : 0;
        result = 31 * result + age;
        return result;
    }

    @Override
    public String toString() {
        return "Chelovek{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
นี่เป็นคลาสทั่วไปที่มีเพียง 2 ฟิลด์ (แต่บางครั้งอาจมีมากกว่า 10-15 ฟิลด์) ใช่แน่นอน ทั้งหมดนี้สามารถสร้างได้ใน IDE แต่ให้ตายเถอะ มันกินพื้นที่ หากมี 15-20 ฟิลด์ ทั้งหมดจำเป็นต้องมี getters, setters, Constructor... ในบรรดาทั้งหมดนี้ วิธีการอื่นอีกสองสามวิธีที่มองไม่เห็นด้วยตาเปล่าอาจสูญหายได้ง่าย ฉันจะช่วยให้โปรแกรมเมอร์เขียนเร็วขึ้นและน้อยลงได้อย่างไร? ลอมบอก ตรงเข้าความร้อนระดับเดียวกันแต่ใช้ลอมบอก:
package lombok;

@Data
public class Chelovek {
    private String name;
    private int age;
}
ใช่นั่นคือทั้งหมด เย็น? คำอธิบายประกอบ @Dataจะ ทำ อะไร ในขั้นตอนการคอมไพล์ มันจะสร้าง getters/setters สำหรับทุกฟิลด์ toString และกำหนดใหม่เท่ากับและ hashCode ตามมาตรฐาน คุณสามารถติดตั้งปลั๊กอินใน IDE และจะเห็นวิธีการทั้งหมดที่ยังไม่ได้สร้าง
คำอธิบายประกอบ  ส่วนที่สอง  ลอมบอก - 1
ฉันหวังว่าคุณผู้อ่านจะพบว่าน่าสนใจ เพราะต่อไปนี้เป็นการแนะนำสั้นๆ และลิงก์ไปยังรายละเอียดต่างๆ ลอมบอกยังให้โอกาสในการปรับแต่งการสร้าง getters, setters หรือ hashcodes ทั้งหมดไม่จำเป็นต้องสร้างแตกต่างออกไปเสมอไป ดังนั้นจึงมีคำอธิบายประกอบแยกกัน (ฉันคิดว่าหลายรายการไม่ต้องการคำอธิบาย) @Getter/@Setter @ToString @EqualsAndHashCode @NoArgsConstructor, @RequiredArgsConstructor และ @AllArgsConstructor @Log เหล่านี้เป็นคำอธิบายประกอบทั่วไปที่สุด สามารถ ดู ทั้งชุดได้ที่นี่ var และ val สมควรได้รับความสนใจเป็นพิเศษ สามารถเขียนได้ดังนี้
package lombok;

import lombok.experimental.var;

@Data
public class Chelovek {
    private String name;
    private int age;

    public static void main(String[] args) {
        var chelovek = new Chelovek();
        chelovek.setAge(22);
        System.out.println(chelovek);
    }
}
เหตุใดจึงจำเป็น? ตัวอย่างเช่น เรามีคลาส RandomAccessFileChannel แล้วทำไมเราต้องเขียนแบบนี้:
RandomAccessFileChannel channel = new RandomAccessFileChannel();
หากเป็นไปได้เช่นนี้:
var channel2 = new RandomAccessFileChannel();
ในความคิดของฉัน สิ่งนี้ไม่เป็นที่ยอมรับเสมอไป ตัวอย่างเช่น เรามีวิธีการชั่วร้ายที่ส่งคืนแผนที่ชั่วร้าย:
public static Map<List<Set<Integer>>, Set<List<String>>> evilMap(){
    return new HashMap<>();
}
ถ้าคุณเรียกมันแบบนี้:
Map<List<Set<Integer>>, Set<List<String>>> listSetMap = evilMap();
มันชัดเจนไม่มากก็น้อยว่าเรากำลังทำงานกับอะไร หากการโทรเป็นดังนี้:
var listSetMap = evilMap();
ถ้าอย่างนั้นใครจะรู้ว่า evilMap() ส่งคืนอะไร และจนกว่าคุณจะดูวิธีการนั้นเอง คุณจะไม่รู้ ทำไมต้องไปผ่านแหล่งที่มา? โดยทั่วไปแล้ว คุณจะต้องระมัดระวังให้มากขึ้นในเรื่องนี้ หัวข้อทดลอง: ที่นี่ ฉันต้องการทราบคำอธิบายประกอบ: @UtilityClass มันสร้างคอนสตรัคเตอร์ส่วนตัวและส่งข้อยกเว้นที่นั่น (เพื่อไม่ให้มือสกปรกจากการสะท้อนกลับเข้าไปที่นี่) และเป็นอย่างดีในตอนต้นของชั้นเรียน มันบอกเราว่ามีวิธีการที่เป็นประโยชน์มากมาย @Delegate ใช้รูปแบบการมอบหมาย หากคุณมีคลาสที่มอบหมายบางสิ่งบางอย่างให้กับคลาสอื่น ในขณะที่ทำการเปลี่ยนแปลงกับบางวิธีเท่านั้น คำอธิบายประกอบนี้จะช่วยให้คุณไม่ต้องทำซ้ำวิธีการ + จะติดตามวิธีการเหล่านั้น หากลบหรือเพิ่มวิธีการออกไป เธอจะสังเกตเห็นมัน เธรดคำอธิบายประกอบแบบทดลอง เว็บไซต์อย่างเป็นทางการของGITHUB เพื่อให้ IDE ทำงานได้ตามปกติกับลอมบอก และไม่เน้นวิธีการว่าไม่มีอยู่จริง คุณต้องติดตั้งปลั๊กอิน บนเว็บไซต์อย่างเป็นทางการมีส่วนการตั้งค่าที่คุณสามารถดูวิธีเชื่อมต่อปลั๊กอินสำหรับแต่ละ IDE ได้ อย่างที่คุณเห็นลอมบอกเป็นที่นิยม > 5,000 ดาวและ > 1,000 ส้อม สปริงใช้ลอมบอกในชั้นเรียนของเธอ หากคุณมีสปริงในโครงการของคุณ ให้มองหามัน บางทีมันอาจจะดึงลอมบอกขึ้นมา คุณก็ไม่รู้หรอก
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION