JavaRush /Блоги Java /Random-TG /Аннотацияҳо. Қисми дуюм. Ломбок

Аннотацияҳо. Қисми дуюм. Ломбок

Дар гурӯҳ нашр шудааст
Аннотацияҳо. Қисми якум, каме дилгиркунанда Дар ин қисм ман тасмим гирифтам, ки ба китобхонаи Ломбок ҳамчун намояндаи маъруфи шарҳҳои манбаъ муроҷиат кунам. Бо эзоҳҳои Runtime дар мақолаи навбатӣ. Як замоне як барномасози 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 майдон бошад, ба хамаи онхо гетер, сетер, конструктор лозим аст... Дар байни инхо боз як-ду усуле, ки ба чашм ноаён аст, ба осонй гум шуда метавонад. Чӣ тавр ман метавонам ба чунин барномасоз барои зудтар ва камтар навиштан кӯмак расонам? Ломбок. Рост ба гармӣ, ҳамон синф, аммо бо истифода аз Ломбок:
package lombok;

@Data
public class Chelovek {
    private String name;
    private int age;
}
Бале, тамом. Хуш? Аннотацияи @Data чӣ кор хоҳад кард ? Дар марҳилаи тартибдиҳӣ, он барои ҳама майдонҳо қабулкунандаҳо/танзимкунандагон тавлид мекунад, toString ва мувофиқи стандартҳо баробар ва hashCode-ро аз нав муайян мекунад. Шумо метавонед плагинро дар IDE насб кунед ва он ҳамаи усулҳоеро, ки ҳанӯз сохта нашудаанд, мебинад.
Аннотацияҳо.  Қисми дуюм.  Ломбок - 1
Умедворам, ки ба шумо, хонанда, ҷолиб буд, зеро дар оянда сарсухани кӯтоҳ ва истинод ба ҷузъиёт хоҳад буд. Lombok инчунин имкони танзими наслро фароҳам меорад; на ҳама гирандагон, танзимкунандагон ё хэшcodeҳо бояд ба таври гуногун тавлид шаванд. Аз ин рӯ, шарҳҳои алоҳида мавҷуданд (ман фикр мекунам, ки бисёре аз онҳо ба тавсиф ниёз надоранд) @Getter/@Setter @ToString @EqualsAndHashCode @NoArgsConstructor, @RequiredArgsConstructor ва @AllArgsConstructor @Log Инҳо маъмултаринанд, тамоми маҷмӯаро дар ин ҷо дидан мумкин аст. вар ва вал сазовори диккати махсус мебошанд. Чунин навиштан мумкин аст:
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();
Ба назари ман, ин на ҳама вақт қобor қабул аст. Масалан, мо як усули бад дорем, ки харитаи бадро бармегардонад:
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 Вебсайти расмии GITHUB Барои он ки IDE бо lombok муътадил кор кунад ва усулҳоро ҳамчун ғайримавҷуд таъкид накунад, шумо бояд плагинро насб кунед. Дар вебсайти расмӣ бахши танзимот мавҷуд аст, ки дар он шумо метавонед бубинед, ки плагинро барои ҳар як IDE чӣ гуна пайваст кардан мумкин аст.Чунон ки шумо мебинед, Lombok маъмул аст. >5000 ситора ва >1000 фард. Баҳор дар дарсҳои худ ломбокро истифода мебарад. Агар шумо дар лоиҳаи худ чашма дошта бошед, онро ҷустуҷӯ кунед, шояд он ломбокро кашид, шумо танҳо намедонед.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION