در این تاپیک سعی می کنم قابلیت های جدید اضافه شده در جاوا ۸ رو قرار بدم. (با اجازه اساتید)
البته چیزایی که میگم اطلاعات خودم نیست و صرفا نتیجه ترجمست.
عبارت های لاندا
این قابلیت توی جاوا ۸ معرفی شد و می تونه سرعت کدنویسی رو چندبرابر کنه. فکر می کنم مهمترین قابلیت اضافه شده توی جاوا ۸ همین عبارات لاندا (Lambda Expressions) باشه.
قالب کلی این عبارت ها بصورت بدنه <- پارامترهای ورودی هستش.
برای نوشتن این عبارات قوانین زیر وجود داره:
- نوشتن نوع پارامترها اختیاریه.
- در صورت وجود یک پارامتر (و نه بیشتر) گذاشتن پرانتز دور پارامتر اختیاریه.
- در صورتی که بدنه ی عبارت لاندای شما تک خطی باشه گذاشتن آکولاد اطراف بدنه اختیاریه.
- نوشتن دستور return اختیاره، در صورتی که بدنه عبارت تک خطی باشه.
در زیر چند تا مثال برای آشنایی بیشتر می بینیم (مثال های خیلی بیشتری رو در اینترنت پیدا می کنین):
() -> System.out.println("Hello");
(String str) -> System.out.println(str);
str -> System.out.println(str);
حالا چندتا مثال کاربردی:
۱. مرتب سازی آرایه:
با یک عبارت لاندای ساده میشه یک آرایه رو به سادگی مرتب کرد (این کار رو با واسط Comparor انجام میدیم که یک نوع FunctionalInterface هست):
String someArray = new String[] {"AAA", "BB", "CCCC", "d"};
Arrays.sort(someArray,
(String s1, String s2) -> s2.length() - s1.length());
۲. برنامه نویسی چند نخی:
از حالا به بعد میشه عبارت های لاندا رو برای تعریف ریسمان های جدید هم استفاده کرد (واسط Runnable هم در جاوا ۸ یک Functional Interface شده):
public class Hello {
private Runnable r1 = () -> System.out.println("Hello! I'm R1");
private Runnable r2 = () -> System.out.println("Hello! I'm R2");
public static void main(String[] args) {
Hello hello = new Hello();
hello.r1.run();
hello.r2.run();
}
}
مثال های بیشتری رو در منابع اوراکل پیدا می کنید.
امیدوارم مفید بوده باشه.
موفق باشید.