استخدم Predicate.not() لنفي مراجع الدوال بشكل نظيف بدلاً من تغليفات lambda.
مقارنة الكود
✕ Java 8
List<String> nonEmpty = list.stream()
.filter(s -> !s.isBlank())
.collect(Collectors.toList());
✓ Java 11+
List<String> nonEmpty = list.stream()
.filter(Predicate.not(String::isBlank))
.toList();
هل ترى مشكلة في هذا الكود؟ أخبرنا.
لماذا يتفوق الأسلوب الحديث
نفي أنظف
لا حاجة لتغليف مراجع الدوال في lambdas لمجرد نفيها.
قابل للتركيب
يعمل مع أي Predicate مما يُتيح سلاسل Predicate نظيفة.
يُقرأ بشكل طبيعي
Predicate.not(String::isBlank) يُقرأ كاللغة الإنجليزية.
الأسلوب القديم
نفي lambda
الأسلوب الحديث
Predicate.not()
منذ JDK
11
الصعوبة
مبتدئ
دعم JDK
Predicate.not()
متاح
متاح منذ JDK 11 (سبتمبر 2018).
كيف يعمل
قبل Java 11، كان نفي مرجع دالة يتطلب تغليفه في lambda. يتيح Predicate.not() نفي أي Predicate مباشرةً مع الإبقاء على الكود مقروءاً ومتّسقاً مع أسلوب مرجع الدالة.
توثيق ذو صلة