JButton button = JButton الجديد ("اختبار") ؛
button.addActionListener(new ActionListener(){
@Override public void actionPerform(ActionEvent e){
System.out.println ("نقرة واحدة");
}
});
< / pre> الطبقة الداخلية أكشن ليستينر< / سبان> يضاف إلى الزر فئة داخلية تحتوي على طريقة الإجراء المنجز () < / الامتداد> فيه. هذا يوفر لنا القليل من التعليمات البرمجية ، ولكن ليس كثيرا.
تسمى الواجهات التي تحدد طريقة واحدة فقط واجهات وظيفية في java 8. غالبا ما تستخدم تعبيرات Lambda مع الواجهات الوظيفية والفئات الداخلية.بناء جملة تعبير Lambda في Java< / h2>عامل لامدا في Java هو -> < / سبان>. مثل C # ، يرفق Java 8 الوسيطات كما هو موضح في هذا المثال:
(int x) -> x * x
< / pre>أعلنا متغيرا x< / span> من نوع عدد صحيح ونريد إرجاع مربع هذا المتغير x< / span>.
دعنا نفكر في تعبيرات لامدا الثلاثة هذه:
< pre class = "prettyprint lang-java" > (int x ، int y) -> س + ص < ر / >< ب / > () -> 36
(سلسلة s) -> { System.out.println(s); }
< / pre>الآن ضع في اعتبارك المثال ActionListener< / span> السابق مع lambda:
< pre class = "prettyprint lang-java" > JButton button = JButton الجديد ("اختبار") ؛
testButton.addActionListener(e -> System.out.println ("نقرة واحدة") ؛
< / pre>من الواضح أن هذا الرمز أصغر حجما وأكثر قابلية للقراءة. نلاحظ أيضا أن الطبقة الداخلية ActionListener< / span> الوسيطة e.حزمة java.util.function
نمط java.util.function في Java 8 ويحتوي على خمسة أنواع من الواجهات الوظيفية:
- Presticate: خاصية للكائن الذي تم تمريره كمعلمة.
- المستهلك: إجراء يجب تشغيله مع الكائن الذي تم تمريره كوسيطة.
- Function: يعرض نتيجة واحدة Y: إكس > Y
- Provider: يحتوي على مثيل X
- أحادي العامل: من X-> x
- مشغل ثنائي ل (X، X)-> نمط x< / li>< / ul >< h2 = "محاذاة النص: يسار ؛" يمكن لمجموعات الكائنات > في Java 8
Lambda تحسين استخدام المجموعات في java. مع الإصدارات المختلفة ، تمت إضافة ميزات إلى المجموعات التي تتحد جيدا مع تعبيرات lambda ، مثل forEach< / span> على كلتا الواجهتين المكرر< / الامتداد> و < span style = "عائلة الخط:" ساعي جديد" , " ساعي" ، حافلة صغيرة؛" >قابل للتكرار< / span >.< / div>
< / div>مثال: < / div>نريد تحديد نمط List الذي يحتوي على قائمة الطلاب وهذا الفصل له سمة عمر الطالب.Listand = Student.createShortList();
< / person>< / pre>< / div>الآن يمكننا تحديد مسند لنتمكن من الاختيار من قائمة< / سبان>.
< pre class = "prettyprint lang-java" > قائمة المسند < الطالب> = و -> et.getAge() >= 20;
< / student>< / pre>أخيرا ، يمكننا القيام بشيء ما باختيارنا:aClass.doqlqthing (pl ، list) ؛
< / pre> هذا أسرع بكثير من الإصدارات السابقة من Java. إذا كنت تريد القيام بعملية أكثر تعقيدا ، فمن المفيد استخدام forEach():et.forEach( e -> e.getName() );
< / pre> في الختام ، فإن الميزات المضافة إلى لغة Java لن تضعف مفهومها الموجه للكائنات بأي شكل من الأشكال. ستجعل هذه الميزات اللغة قوية وغنية وأنيقة.المراجع:
Please disable your ad blocker and refresh the window to use this website.