KodeGym/Blog Jawa/Acak/Anotasi. Part 2. Lombok
John Squirrels
tingkat
San Francisco

Anotasi. Part 2. Lombok

Diterbitake ing grup
Anotasi. Part 1 — rada mboseni Ing bagean iki, aku mutusake kanggo ndemek perpustakaan Lombok, amarga iki minangka wakil kondhang saka anotasi kode sumber. Aku bakal ngatasi anotasi runtime ing artikel sabanjure. Anotasi.  Part 2. Lombok - 1Ing jaman biyen, ana programer Jawa. Saben dina dheweke nulis kode biasa, contone, kaya iki:

package lombok;

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

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

    public Person() {
    }

    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;

        Person person = (Person) o;

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

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

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}
Kelas iki biasa - mung 2 lapangan (sawise kabeh, kadhangkala luwih saka 10-15 lapangan). Mesthi, kabeh iki bisa digawe ing IDE. Nanging sial, sing njupuk Panggonan. Yen ana 15-20 lapangan, saben wong mbutuhake getter, setter, konstruktor ... Antarane kabeh iki, sawetara cara liyane, ora katon ing mripat, bisa gampang ilang. Kepiye carane mbantu programmer iki nulis luwih cepet lan kurang? Lombok. Metu saka wajan lan menyang geni karo sampeyan. Iki kelas sing padha, nanging saiki nggunakake Lombok:

package lombok;

@Data
public class Person {
    private String name;
    private int age;
}
Mekaten. Kelangan, huh? Apa sing ditindakake anotasi @Data ? Sajrone kompilasi, anotasi iki ngasilake getter / setter kanggo kabeh lapangan, lan overrides toString (), padha (), lan hashCode () miturut aturan standar. Sampeyan bisa nginstal plugin ing IDE. Bakal weruh cara apa wae sing durung digawe. Anotasi.  Part 2. Lombok - 2Ing wektu iki, muga-muga sampeyan, sing maca, wis dadi kasengsem, amarga ing ngisor iki bakal dadi introduksi singkat kanthi pranala menyang rincian. Lombok uga ngijini sampeyan ngatur generasi kode, contone, kabeh getter lan setter ora tansah dibutuhake, utawa sampeyan bisa uga kudu algoritma beda kanggo generate kode hash. Kanggo ngrampungake iki, ana anotasi sing kapisah (aku mikir akeh sing ora butuh katrangan): @Getter/@Setter, @ToString, @EqualsAndHashCode, @NoArgsConstructor, @RequiredArgsConstructor, lan @AllArgsConstructor, @Log Iki sing paling akeh. umum. Kabeh set bisa dideleng ing kene . Pay manungsa waé khusus kanggo var lan val. Iki tegese sampeyan bisa nulis kode kaya iki:

package lombok;

import lombok.experimental.var;

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

    public static void main(String[] args) {
        var person = new Person();
        person.setAge(22);
        System.out.println(person);
    }
}
Yagene iki perlu? Contone, kita duwe kelas RandomAccessFileChannel. Napa kita pengin nulis kode kaya iki?

RandomAccessFileChannel channel = new RandomAccessFileChannel();
Yen kita bisa nindakake 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();
Banjur iku luwih utawa kurang cetha apa kita nggarap. Yen telpon kaya iki:

var listSetMap = evilMap();
banjur mung setan ngerti apa evilMap () bakal bali ana, lan nganti sampeyan katon ing cara dhewe, sampeyan ora ngerti. Napa mbukak file sumber? Umumé, sampeyan kudu ati-ati karo iki. Cabang eksperimen: Ing kene aku pengin nyebutake anotasi @UtilityClass . Iku nggawe konstruktor pribadi sing mbalang pangecualian (dadi grubby tangan sethitik ora nggunakake bayangan kanggo meddle ana). Lan apik banget ing wiwitan kelas - ngandhani yen ana cara sarana. Anotasi @Delegate ngetrapake pola delegasi. Upaminipun sampeyan duwe kelas sing utusan soko kanggo kelas liyane, lan sampeyan nggawe owahan kanggo mung sawetara cara - anotasi iki bakal nylametaké panjenengan saka duplikat cara lan bakal nglacak wong. Yen sampeyan mbusak utawa nambah cara, anotasi iki bakal sok dong mirsani. Cabang anotasi eksperimen Situs web resmi GitHub Supaya IDE bisa mlaku kanthi bener karo lombok lan ora nyorot cara sing ora ana, sampeyan kudu nginstal plugin kasebut. Situs web resmi duwe bagean persiyapan ing ngendi sampeyan bisa ndeleng carane nyambungake plugin kanggo saben IDE. Minangka sampeyan bisa ndeleng, lombok populer:> 5.000 lintang lan> 1.000 garpu. Spring migunakake lombok ing sawijining kelas. Yen sampeyan duwe Spring ing proyek sampeyan, delengen - bisa uga narik lombok tanpa ngerti.
Komentar
  • Popular
  • Anyar
  • lawas
Sampeyan kudu mlebu kanggo ninggalake komentar
Kaca iki durung duwe komentar