تخطَّ إلى المحتوى

Method Reference

مرجع الدالة Method Reference

مرجع الدالة :: اختصار لـ lambda تستدعي دالة موجودة — أقصر وأوضح.

Method reference (العلامة ::) اختصار لـ lambda تستدعي دالة موجودة بالفعل. أربعة أنواع: دالة ثابتة، دالة عضو، دالة عضو لمرجع، ومرجع باني.

الصياغة

ClassName::staticMethod
instance::method
ClassName::method
ClassName::new

📄 مثال

import java.util.*;
import java.util.function.*;

// دالة ثابتة:
Function<String, Integer> len = String::length;

// دالة عضو:
Predicate<String> isEmpty = String::isEmpty;

// مع المجموعات:
List<String> names = List.of("سارة", "أحمد", "محمد");
names.forEach(System.out::println);

names.stream()
    .map(String::toUpperCase)
    .sorted()
    .forEach(System.out::println);

// مرجع باني:
Supplier<ArrayList<String>> factory = ArrayList::new;
ArrayList<String> list = factory.get();

أهم النقاط

العنصرالوظيفة
Class::staticMethodمرجع لدالة ثابتة
instance::methodمرجع لدالة عضو على كائن محدد
Class::methodمرجع لدالة عضو (يحتاج معامل أول)
Class::newمرجع لباني الصنف

💡 نصائح عملية

  • استخدم method reference مع map و filter و forEach — أوضح من lambda مكافئ
  • String::toUpperCase يكافئ s -> s.toUpperCase()

⚠️ أخطاء شائعة

  • nxing method reference مع دوال ذات عدة معاملات — أحيانًا lambda أوضح
  • nxing Class::method عندما يكون Method static على الصنف — يجب ClassName::method

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار JAVA الكامل بالعربي.