JavaRush /Blog Jawa /Random-JV /Anotasi. Bagian loro. Lombok

Anotasi. Bagian loro. Lombok

Diterbitake ing grup
Anotasi. Bagean siji, rada mboseni Ing bagean iki, aku mutusake kanggo ndemek perpustakaan Lombok minangka wakil kondhang saka anotasi Source. Kanthi anotasi Runtime ing artikel sabanjure. Biyen ana programmer java, saben dina nulis kode biasa, contone iki:
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 +
                '}';
    }
}
Iki minangka kelas khas sing mung ana 2 lapangan (nanging kadhangkala ana luwih saka 10-15 lapangan). Ya, mesthi, kabeh iki bisa digawe ing IDE, nanging peduli, butuh papan. Yen ana 15-20 lapangan, kabeh mau kudu getter, setter, konstruktor ... Ing antarane kabeh iki, sawetara cara liyane sing ora katon ing mripat bisa gampang ilang. Kepiye carane bisa nulungi programmer kasebut supaya bisa nulis luwih cepet lan kurang? Lombok. Langsung panas, sekelas tapi nganggo Lombok:
package lombok;

@Data
public class Chelovek {
    private String name;
    private int age;
}
Ya mung kuwi. Kelangan? Apa sing bakal ditindakake anotasi @Data ? Ing tataran kompilasi, bakal ngasilake getter / setter kanggo kabeh lapangan, toString lan redefine padha lan hashCode miturut standar. Sampeyan bisa nginstal plugin ing IDE lan bakal weruh kabeh cara sing durung digawe.
Anotasi.  Bagian loro.  Lombok - 1
Muga-muga sampeyan, sing maca, nemokake menarik, amarga ing ngisor iki minangka introduksi singkat lan pranala menyang rincian. Lombok uga menehi kesempatan kanggo ngatur generasi; kabeh getter, setter, utawa kode hash ora mesthi kudu digawe kanthi beda. Mulane, ana anotasi sing kapisah (aku mikir akeh sing ora butuh katrangan) @Getter/@Setter @ToString @EqualsAndHashCode @NoArgsConstructor, @RequiredArgsConstructor lan @AllArgsConstructor @Log Iki minangka sing paling khas, kabeh set bisa dideleng kene var lan val pantes manungsa waé khusus. Sampeyan bisa nulis kaya iki:
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);
    }
}
Yagene iki perlu? Contone, kita duwe kelas RandomAccessFileChannel. Ya, kenapa kita kudu nulis kaya iki:
RandomAccessFileChannel channel = new RandomAccessFileChannel();
Yen bisa kaya iki:
var channel2 = new RandomAccessFileChannel();
Ing mratelakake panemume, iki ora tansah ditrima. Contone, kita duwe cara ala sing ngasilake peta ala:
public static Map<List<Set<Integer>>, Set<List<String>>> evilMap(){
    return new HashMap<>();
}
yen sampeyan nelpon kaya iki:
Map<List<Set<Integer>>, Set<List<String>>> listSetMap = evilMap();
Iku luwih utawa kurang cetha apa kita nggarap. Yen telpon kaya iki:
var listSetMap = evilMap();
banjur sing neraka ngerti apa evilMap () bali, lan nganti sampeyan katon ing cara dhewe, sampeyan ora bakal ngerti. Apa repot-repot liwat sumber? Umumé, sampeyan kudu luwih ati-ati babagan iki. Utas eksperimen: Ing kene aku pengin nyathet anotasi: @UtilityClass Nggawe konstruktor pribadi lan mbuwang pangecualian ing kana (supaya tangan sing reged saka bayangan ora mlebu ing kene). Lan apik banget ing awal kelas ngandhani yen ana cara sarana. @Delegate Ngleksanakake pola delegasi. Yen sampeyan duwe kelas sing utusan soko kanggo kelas liyane, nalika nggawe owahan mung sawetara cara, anotasi iki bakal nylametaké panjenengan saka duplikat cara + bakal nglacak wong. Yen cara dibusak utawa ditambahake, dheweke bakal sok dong mirsani. Utas anotasi eksperimen GITHUB Situs web resmi Supaya IDE bisa mlaku kanthi normal karo lombok, lan ora nyorot cara sing ora ana, sampeyan kudu nginstal plugin kasebut. Ing situs web resmi, ana bagean persiyapan ing ngendi sampeyan bisa ndeleng carane nyambungake plugin kanggo saben IDE. Kaya sing sampeyan ngerteni, Lombok populer. > 5000 lintang lan > 1000 garpu. Spring nggunakake lombok ing kelas dheweke. Yen sampeyan duwe musim semi ing proyek sampeyan, deleng, bisa uga dheweke narik lombok, sampeyan ora ngerti.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION