JavaRush /جاوا بلاگ /Random-SD /تشريحون. حصو ٻيو. لومبوڪ

تشريحون. حصو ٻيو. لومبوڪ

گروپ ۾ شايع ٿيل
تشريحون. حصو پهريون، ٿورڙو بورنگ هن حصي ۾، مون فيصلو ڪيو ته لومبوڪ لائبرري کي ماخذ تشريحن جي هڪ مشهور نمائندي جي حيثيت سان رابطو ڪيو. ايندڙ مضمون ۾ رن ٽائم اينوٽيشنز سان. هڪ دفعي اتي هڪ جاوا پروگرامر هو، هر روز هو عام ڪوڊ لکندو هو، مثال طور هي:
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 تشريح ڇا ڪندو ؟ تاليف جي اسٽيج تي، اهو سڀني شعبن لاءِ گيٽر/سيٽر ٺاهيندو، toString ۽ معيار جي مطابق برابر ۽ hashCode کي ٻيهر بيان ڪري ٿو. توهان IDE ۾ هڪ پلگ ان انسٽال ڪري سگهو ٿا ۽ اهو سڀ طريقا ڏسندو جيڪي اڃا تائين نه ٺاهيا ويا آهن.
تشريحون.  حصو ٻيو.  لومبوڪ - 1
مون کي اميد آهي ته توهان، پڙهندڙ، ان کي دلچسپ محسوس ڪيو، ڇو ته هيٺ ڏنل تفصيلات جو مختصر تعارف ۽ لنڪ آهي. Lombok پڻ موقعا فراهم ڪري ٿو پيدا ڪرڻ لاءِ ڪسٽمائيز ڪرڻ؛ سڀ حاصل ڪرڻ وارا، سيٽرز، يا هيش ڪوڊس کي هميشه مختلف طريقي سان پيدا ڪرڻ جي ضرورت ناهي. تنهن ڪري، اتي الڳ الڳ تشريحون آهن (منهنجو خيال آهي ته انهن مان گهڻن کي وضاحت جي ضرورت ناهي) @Getter/@Setter @ToString @EqualsAndHashCode @NoArgsConstructor، @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();
پوءِ ڪير ڄاڻي ٿو ته ڪهڙو برائي ميپ() واپس اچي ٿو، ۽ جيستائين توهان طريقي سان نه ڏسندا، توهان کي خبر ناهي. ذريعن جي ذريعي وڃڻ جي تڪليف ڇو؟ عام طور تي، توهان کي هن سان وڌيڪ محتاط ٿيڻ جي ضرورت آهي. تجرباتي موضوع: هتي آئون نوٽيفڪيشن کي نوٽ ڪرڻ چاهيندس: @UtilityClass اهو هڪ پرائيويٽ ڪنسٽرڪٽر ٺاهي ٿو ۽ اتي هڪ استثنا اڇلائي ٿو (انهي ڪري ته عڪاسي کان گندا هٿ هتي نه اچن). ۽ بلڪل چڱي طرح ڪلاس جي شروعات ۾ اهو اسان کي ٻڌائي ٿو ته افاديت جا طريقا آهن. @Delegate وفد جي نموني کي لاڳو ڪري ٿو. جيڪڏھن توھان وٽ ھڪڙو ڪلاس آھي جيڪو ڪنھن ٻئي طبقي کي ڪنھن شيءِ جي نمائندگي ڪري ٿو، جڏھن ته رڳو ڪجھ طريقن ۾ تبديليون آڻيندو آھي، ھي تشريح توھان کي نقل ڪرڻ واري طريقن کان بچائيندو + انھن تي باخبر رھندو. جيڪڏهن هڪ طريقو هٽايو ويو يا شامل ڪيو ويو، هوء ان کي نوٽيس ڪندي. تجرباتي تشريحون موضوع GITHUB سرڪاري ويب سائيٽ IDE لاءِ عام طور تي لومبوڪ سان ڪم ڪرڻ لاءِ، ۽ طريقن کي نمايان نه ڪرڻ لاءِ جيئن غير موجود آهي، توهان کي پلگ ان انسٽال ڪرڻ جي ضرورت آهي. سرڪاري ويب سائيٽ تي، اتي هڪ سيٽ اپ سيڪشن آهي جتي توهان ڏسي سگهو ٿا ته هر IDE لاءِ پلگ ان ڪيئن ڳنڍجي. جيئن توهان ڏسي سگهو ٿا، Lombok مشهور آهي. > 5000 تارا ۽ > 1000 فورڪس. بهار پنهنجي ڪلاسن ۾ لومبوڪ استعمال ڪري ٿي. جيڪڏهن توهان جي پروجيڪٽ ۾ بهار آهي، ان کي ڳوليو، شايد اهو لومبوڪ کي ڇڪي، توهان کي خبر ناهي.
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION