الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

Project Lombok

بدأه Ahmed-Ghanem في 12 يناير 2011 · 10 رد · 1,159 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمه الله وبركاته

كثير منا كمبرمجي جافا يكتبون في الغالب Getters, Setters, Constructors و اشياء اخري تكون نمطيه بشكل كبير في الكود .. ربما في الاصدارات القادمه من jdk نجد البديل.

اثناء تصفحي بعض المواقع وجدت هذا البديل وهو Project Lombok

فقط قم باضافه annotations اثناء كتابتك للكود الخاص بك ومن ثم يقوم lombok بعمل اضافه Getters, Setters, Constructors ..الخ طبقا لل annotations الذي قمت بوضعه

وهذا سوف يتضح مع الامثله

احدالعيوب التي اراها:

اعتماديتها علي JDK version

عند قراءه الكود سنجد صعوبه اذا لم نكن لدينا معرفه ب Lombok او annotations المستخدم ولكن يمكنك كتابه تلك المعلومات ب documentation فيسهل التعامل معاها

يمكنك تحميل Lombok.jar ثم اضافته و استخدام النت بينز او اكليبس

هذه تجارب سريعه وبسيطه

مثال:- استخدام @Getters and @Setters

--------------------------------------------------------

بالطريقه النطميه سنكتب الكلاس بتلك الطريقه

class Student{
    private int id;
    private String name;
    private int age;
    public Student(){
    }

    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
  // وهكذا 
.
.
.
.

}

باستخدام Lombok سنكتبه بتلك الطريقه

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

@NoArgsConstructor class Student{
    @Getter @Setter private int id;
    @Getter @Setter private String name;
    @Getter @Setter private int age;

}

مثال اخر باستخدام Lombok

--------------------------------------

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@NoArgsConstructor
@AllArgsConstructor
@Data
class Student {
    private int id;
    private String name;
    private int age;
    public static void main(String[] args){
        Student s1 = new Student(1,"ahmed",21);
        Student s2 = new Student(2,"mouhamed",30);

        System.out.println(s1);
        System.out.println(s2);
    }
}

run:
Student(id=1, name=ahmed, age=21)
Student(id=2, name=mouhamed, age=30)
BUILD SUCCESSFUL (total time: 1 second)

لمعرفه باقي مميزات Lombokهنا

-- للعلم المكتبه مفتوحه المصدر :)

6
2coscqr.jpg
#2

مكتبة رائعة فعلا !

لكن أعتقد ان هناك أمر في الـ netbeans يقوم بإنشاء هذه الدوال آليا!

لا حرمنا من جديدك أسعدك الله وزادك من فضله.

عفواً أحبتي انقطاعي بسبب الدراسة دعواتكم بالتوفيق..

{ لا ينال العلم مستحٍ ولا مستكبر }

#3

اولا جزاك الله خيرا :)

لا يحرمنا الله من جديدك :D

انا ضفت المكتبه وقولت اجرب البرنامج اللى انت حاطه لكن مش راضى يشتغل

بيقولى خطأ

مش عارف بقا فيه ايه

ممكن تنزل لينا مثال بالمكتبه بتاعته :)

معلش wacko.gif

Software Developer
Mahmoudkelany.com


 

#4

جزانا واياك يا حوده

بص يا باشا المشكله كلها ان النت بينز مش شايف كونستركتور بالبرامتيرز ديه id,name,age فبيطلع علامه ايرور .. بس جرب تعمله كومبيل او حتي اعمل رن وتجاهل الايرور ده

تم تعديل هذه المشاركة بواسطة Ahmed-Ghanem في 12 يناير 2011 في 21:54

2coscqr.jpg
#5
Ahmed-Ghanem كتب:

جزانا واياك يا حوده

بص يا باشا المشكله كلها ان النت بينز مش شايف كونستركتور بالبرامتيرز ديه id,name,age فبيطلع علامه ايرور .. بس جرب تعمله كومبيل او حتي اعمل رن وتجاهل الايرور ده

حاولت ولكن لم يعمل

وظهر لى الخطأ التالى

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
  symbol:   constructor Student(int,java.lang.String,int)
  location: class annotationstest.Student

ودا متوقع wacko.gif

Software Developer
Mahmoudkelany.com


 

#6
Mahmoud Kelany كتب:

حاولت ولكن لم يعمل

وظهر لى الخطأ التالى

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
  symbol:   constructor Student(int,java.lang.String,int)
  location: class annotationstest.Student

ودا متوقع wacko.gif

انظر

57630881.jpg

28355421.jpg

2coscqr.jpg
#7

طيب ما انا عامل نفس النظام

لكن موضوع الـ two constructor دا مش بيظهر عندى

انا اللى بيظهر عندى الـ non argument constructor

يمكن المشكله من عندى

Software Developer
Mahmoudkelany.com


 

#8

الموضوع ده حلو جدا ... بس لو موجود في ال JDK نفسها ..

فمثلا من الصعب أن أستخدم ال reflection لشئ مثل هذا ... مع المعلوميه إن كل ال IDEs المشهوره تقوم بكتابة كود ال setters و ال getters و ال constructors وحدها بعدة ضغطات من الفأره

#9

هوه يقوم بها يا JavaProgrammer ويبقي الشيفرة صغيرة :)

على كل أعجبني هذا Cleanup

وهذا Synchronized

ولم أفهم هذا SneakyThrows

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#11

اه فهمت الموضوع

هذا الـ annotation يعمل على تغليف الخطأ الذي يجب فحصه checked Exception في خطأ لا يجب فحصه unchecked Exception

الصراحة أنه ولحد الآن لا يوجد طريقة صحيحة غير هذه لتلافي مشاكل التوافقية computability بين إصدارات الحزمة الواحدة API version

بالطبع الطريقة نفسها غير فعالة مئة بالمئة

أنت لن تضظر أن تغير لكنك ستحصل على RuntimeException إن لم تغير

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

مواضيع مشابهة