البرمجة

Java 8: Mastering Method References

في عالم برمجة Java 8، تقدم لنا الميزة الرائعة للـ Method References طريقة أنيقة للتعبير عن الدوال. وفي سياق سؤالك حول كيفية استخدام method reference بناءً على method reference آخر، يجب أولاً أن نتفهم كيف يعمل الأمر.

لديك كلاس Person الذي يحتوي على خاصية sibling و age. الفكرة هي الحصول على قائمة من أعمار الأشقاء باستخدام تعبيرات Method References. في المثال الذي قدمته، قمت بذكر أن الكود التالي يعمل:

roster.stream().map(p -> p.getSibling().getAge()).collect(Collectors.toList());

والآن، تساؤلك هو هل يمكن القيام بذلك باستخدام method references بطريقة أكثر أناقة؟

في Java، لا يمكنك استخدام method reference مباشرة على method reference آخر كما في المثال الذي قدمته:

roster.stream().map(Person::getSibling::getAge).collect(Collectors.toList());

في هذا السياق، يمكن استخدام method reference على method reference إذا كانت الدالة المستهدفة هي static، ولكن لا يمكن استخدامها في حال كانت الدالة تتطلب كائنًا.

لذا، يمكنك استخدام method reference بطريقة أخرى مشابهة للمثال الذي قدمته، مثل:

roster.stream().map(p -> p.getSibling().getAge()).collect(Collectors.toList());

هذا يضمن الوصول إلى الأشقاء ومن ثم الحصول على الأعمار بطريقة فعّالة. في النهاية، يظل استخدام method reference قرارًا بين قراءة الكود وفهمه، وتحقيق الأداء المناسب.

المزيد من المعلومات

الآن، سنقوم بتوسيع المحادثة وإضافة المزيد من المعلومات حول تعبيرات Method References في Java 8 وكيف يمكن استخدامها بطرق مختلفة.

تعتبر تعبيرات Method References جزءًا أساسيًا من ميزة Lambda expressions في Java 8، وهي تسهل على المطورين كتابة الشيفرة بشكل أنظف وأقل تعقيداً. يسمح Method References بالربط بين اللامبدا والدوال الموجودة بالفعل في البرنامج. هذا يسهل فهم الشيفرة وجعلها أقل إزعاجاً.

هناك ثلاثة أنواع رئيسية من Method References في Java:

  1. مراجعة إلى static method: يمكنك استخدامها عندما يحتاج اللامبدا إلى استدعاء static method. على سبيل المثال:
List<String> myList = Arrays.asList("Java", "C++", "Python");
myList.forEach(System.out::println);

هنا، نستخدم Method Reference للإشارة إلى static method println من System.out.

  1. مراجعة إلى دالة مثيلة: يمكنك استخدامها عندما يحتاج اللامبدا إلى استدعاء دالة مثيلة. على سبيل المثال:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
int sum = numbers.stream().reduce(0, Integer::sum);

هنا، يتم استخدام Method Reference للإشارة إلى دالة مثيلة Integer::sum.

  1. مراجعة إلى دالة من أحد أفرع الكائن: يمكنك استخدامها عندما يحتاج اللامبدا إلى استدعاء دالة من كائن محدد. على سبيل المثال:
List<Person> roster = ...; // assume you have a list of Person objects
roster.stream().map(Person::getAge).collect(Collectors.toList());

هنا، يتم استخدام Method Reference لاستدعاء دالة getAge من كل كائن من قائمة الأشخاص.

إلى جانب ذلك، يمكنك الجمع بين Method References وتركيب اللامبدا للوصول إلى مزيد من المرونة. ومع ذلك، يجب عليك أن تكون حذرًا عند استخدامها للتأكد من أن الشيفرة لا تفقد وضوحها وصيانتها.

في الختام، يظل استخدام Method References أداة قوية في جعل الشيفرة أكثر قراءةً وصيانةً، وتساهم في جعل برمجة Java 8 أكثر فعالية.

مقالات ذات صلة

زر الذهاب إلى الأعلى
إغلاق

أنت تستخدم إضافة Adblock

يرجى تعطيل مانع الإعلانات حيث أن موقعنا غير مزعج ولا بأس من عرض الأعلانات لك فهي تعتبر كمصدر دخل لنا و دعم مقدم منك لنا لنستمر في تقديم المحتوى المناسب و المفيد لك فلا تبخل بدعمنا عزيزي الزائر