JavaRush /בלוג Java /Random-HE /הערות. חלק שני. לומבוק

הערות. חלק שני. לומבוק

פורסם בקבוצה
הערות. חלק ראשון, קצת משעמם בחלק זה, החלטתי לגעת בספריית לומבוק כנציגה ידועה של הערות מקור. עם הערות זמן ריצה במאמר הבא. פעם היה מתכנת ג'אווה, כל יום הוא כתב קוד רגיל, למשל זה:
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 שדות, כולם זקוקים לגטרים, קובעים, קונסטרוקטורים... בין כל זה, כמה שיטות אחרות שאינן נראות לעין עלולות ללכת לאיבוד בקלות. איך אני יכול לעזור למתכנת כזה לכתוב מהר יותר ופחות? לומבוק. ישר לתוך החום, אותה כיתה אבל באמצעות Lombok:
package lombok;

@Data
public class Chelovek {
    private String name;
    private int age;
}
כן, זה הכל. מגניב? מה יעשה הערת @Data ? בשלב הקומפילציה, הוא יפיק getters/seters עבור כל השדות, toString ויגדיר מחדש equals ו-hashCode בהתאם לסטנדרטים. אתה יכול להתקין תוסף ב-IDE והוא יראה את כל השיטות שעדיין לא נוצרו.
הערות.  חלק שני.  לומבוק - 1
אני מקווה שאתה, הקורא, מצא את זה מעניין, כי מה להלן הוא הקדמה קצרה וקישורים לפרטים. Lombok מספקת גם את ההזדמנות להתאים אישית את הדור; לא תמיד צריך ליצור את כל ה-Gutters, Setters או Hashcodes בצורה שונה. לכן, יש הערות נפרדות (אני חושב שרבות מהן אינן זקוקות לתיאור) @Getter/@Setter @ToString @EqualsAndHashCode @NoArgsConstructor, @RequiredArgsConstructor, @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 יעבוד כרגיל עם lombok, ולא ידגיש שיטות כלא קיימות, עליך להתקין את התוסף. באתר הרשמי ישנו קטע הגדרות בו ניתן לראות כיצד לחבר את התוסף לכל IDE כפי שניתן לראות, Lombok פופולרי. >5000 כוכבים ו->1000 מזלגות. אביב משתמשת בלומבוק בשיעורים שלה. אם יש לך קפיץ בפרויקט שלך, חפש אותו, אולי הוא משך את הלומבוק, אתה פשוט לא יודע.
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION