JavaRush /Java Blog /Random-TK /Annotasiýa. Ikinji bölüm. Lombok

Annotasiýa. Ikinji bölüm. Lombok

Toparda çap edildi
Annotasiýa. Birinji bölüm, birneme içgysgynç Bu bölümde, çeşme düşündirişleriniň tanymal wekili hökmünde Lombok kitaphanasyna degmek kararyna geldim. Indiki makalada iş wagtynyň düşündirişleri bilen. Bir wagtlar java programmisti bardy, her gün adaty kod ýazýardy, mysal üçin:
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 +
                '}';
    }
}
Bu diňe 2 meýdanly adaty synp (ýöne käwagt 10-15-den gowrak meýdan bar). Hawa, elbetde, bularyň hemmesi IDE-de döredilip bilner, ýöne ýalňyşmasam, ýer tutýar. 15-20 meýdan bar bolsa, olaryň hemmesine giriş, sazlaýjy, konstruktor gerek ... Bularyň arasynda göz üçin görünmeýän başga-da birnäçe usul aňsatlyk bilen ýitip biler. Şeýle programmistiň has çalt we az ýazmagyna nädip kömek edip bilerin? Lombok. Göni otda, şol bir synp, ýöne Lombok ulanyp:
package lombok;

@Data
public class Chelovek {
    private String name;
    private int age;
}
Hawa, bu hemmesi. Salkyn? @Data düşündiriş näme eder ? Ygyndy tapgyrynda, ähli meýdanlar üçin getterler / sazlaýjylar dörediler, deňleme we hashCode standartlaryna laýyklykda kesgitlemek we kesgitlemek. IDE-de bir plugin gurup bilersiňiz we ol entek döredilmedik ähli usullary görer.
Annotasiýa.  Ikinji bölüm.  Lombok - 1
Okyjy, sizi gyzyklandyrdy diýip umyt edýärin, sebäbi indiki gysga giriş we jikme-jikliklere baglanyşyk. “Lombok” nesli özleşdirmäge mümkinçilik berýär; ähli girýänler, sazlaýjylar ýa-da hashkodlar hemişe başgaça döredilmeli däl. Şonuň üçin aýratyn düşündirişler bar (olaryň köpüsine düşündiriş gerek däl) @ Getter / @ Setter @ToString @EqualsAndHashCode @NoArgsConstructor, @RequiredArgsConstructor we @AllArgsConstructor @Log bu ýerde var we val aýratyn ünsi çekmelidir. Şeýle ýazmak mümkin:
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);
    }
}
Bu näme üçin zerur? Mysal üçin, “RandomAccessFileChannel” synpymyz bar, näme üçin muny beýle ýazmaly:
RandomAccessFileChannel channel = new RandomAccessFileChannel();
Mümkin bolsa şular ýaly:
var channel2 = new RandomAccessFileChannel();
Meniň pikirimçe, bu mydama kabul ederlikli däl. Mysal üçin, erbet kartany yzyna gaýtarýan erbet usul bar:
public static Map<List<Set<Integer>>, Set<List<String>>> evilMap(){
    return new HashMap<>();
}
eger şeýle diýseňiz:
Map<List<Set<Integer>>, Set<List<String>>> listSetMap = evilMap();
Näme bilen işleýändigimiz has düşnükli. Çagyryş şeýle bolsa:
var listSetMap = evilMap();
soň erbetlik kartasynyň () gaýdyp gelýändigini kim bilýär we usulyň özüne seredýänçäňiz bilmersiňiz. Näme üçin çeşmelerden geçmekden biynjalyk bolýarsyňyz? Umuman, bu meselede has seresap bolmaly. Synag sapagy: Ine, bellikleri belläsim gelýär: @UtilityClass Hususy konstruktor döredýär we ol ýerde kadadan çykma döredýär (şöhlelenmekden hapa eller bu ýere girmez ýaly). Sapagyň başynda bolsa gaty peýdaly usullaryň bardygyny aýdýar. @Delegate delegasiýa görnüşini durmuşa geçirýär. Başga bir klasa bir zat tabşyrýan synpyňyz bar bolsa, diňe käbir usullara üýtgeşmeler girizýän bolsaňyz, bu düşündiriş sizi köpeltmek usullaryndan halas eder + olary yzarlar. Bir usul aýrylsa ýa-da goşulsa, ony görer. Synag bellikleri sapagy GITHUB Resmi web sahypasy IDE-iň lombok bilen kadaly işlemegi we usullaryň ýoklugyny görkezmezligi üçin plugin gurmaly. Resmi web sahypasynda, her IDE üçin plagini nädip birikdirmelidigini görüp boljak gurnama bölümi bar . Görşüňiz ýaly Lombok meşhur. > 5000 ýyldyz we> 1000 çeňňek. Bahar sapaklarynda lombok ulanýar. Taslamaňyzda çeşme bar bolsa, gözläň, belki lomboky çeken bolsa, bilmersiňiz.
Teswirler
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION