ميزات جديدة من واجهة Java 8 الوظيفية المدمجة
في منشور سابق للمدونة ، تعبير Lambda ، ذكرنا الواجهة الوظيفية التي توفرها Java 8. في هذه المقالة ، سنقدم الواجهات الوظيفية الأربعة الأكثر أساسية في Java 8.
للإشارة إلى الأساليب ، بالمعنى الدقيق للكلمة ، يجب تحديد واجهة. بغض النظر عن كيفية عملنا ، لا يوجد في الواقع أربعة واجهات ممكنة للعمل.
يوفر Java 8 حزمة الواجهة الوظيفية java.util.function.*، والتي بموجبها هناك العديد من الواجهات الوظيفية المضمنة في Java 8. ومع ذلك ، يتم تقسيمها بشكل أساسي إلى أربعة أنواع أساسية:
الواجهة الوظيفية (وظيفة)
أخذ T كمدخلات و R كمخرجات ، كما أنه يحتوي على الطريقة الافتراضية مع وظائف أخرى.
functionalInterFacepublic Interface Function <T ، r> {r Apply (t t) ؛} نموذج الرمز
الفراغ الثابت العام (سلسلة [] args) {// هنا نستخدم مرجع طريقة Java8 ، واجهة وظيفية وظيفية! دالة <string ، boolean> function = "hello java" :: endswith ؛ system.out.println (function.apply ("java") ؛} واجهة المستهلك
خذ T كمدخلات دون إرجاع أي شيء ، مما يشير إلى عملية على معلمة واحدة.
functionalInterfacepublic Interface Consumer <T> {void قبول (t t) ؛} نموذج الرمز
فئة TestDemo {// لا تحتوي هذه الطريقة على قيمة إرجاع ، ولكن هناك معلمات إدخال المرح الفراغ العام (String str) {system.out.println (str) ؛ }} الفئة العامة testFunctional {public static void main (string [] args) {testDemo Demo = new testDemo () ؛ // واجهة نوع المستهلك ، فقط معلمات الإدخال ، لا توجد معلمات إخراج المستهلك <string> المستهلك = Demo :: Fun ؛ المستهلك. Accept ("") ؛ }}
مزود
لا توجد معلمات إدخال ، فقط t إرجاع الإخراج
functionalInterFacepublic Interface Suveriplier <T> {t get () ؛} نموذج الرمز
الفئة العامة testFunctional {public static void main (string [] args) {// واجهة نوع المورد ، فقط معلمات الإخراج ، لا توجد معلمات إدخال! المورد <string> المورد = "java 8" :: touppercase ؛ system.out.println (الموردين. get ()) ؛ }} واجهة تأكيد (مسند)
مع أخذ T كإدخال وإرجاع منطقية كإخراج ، تحتوي الواجهة على عدد من الطرق الافتراضية للجمع بين المسند في منطق معقد آخر (أو ، غير).
functionalInterFacepublic Interface Prection <T> {test Boolean (t t) ؛} نموذج الرمز
الفئة العامة testFunctional {public static void main (string [] args) {// assert type interface. هناك معلمات إدخال ، معلمات الإخراج هي مسند منطقي <string> estive = "Android" :: equalsInsIgnoreCase ؛ system.out.println (estericy.test ("Android")) ؛ }}لذلك ، في Java 8 ، نظرًا لوجود واجهات وظيفية أربعة أعلاه ، من النادر عمومًا للمستخدمين تحديد واجهات وظيفية جديدة!
شكرا لك على القراءة ، آمل أن تساعدك. شكرا لك على دعمك لهذا الموقع!