تیکه پاره های جاوا
527 subscribers
93 photos
24 videos
7 files
58 links
سلام خوش اومدید. اینجا یادداشت ها و تکه های جاوا رو کنار هم قرار میدیم :) مطالب کاملا اختصاصی و دستنویس هستند. کپی فقط با ذکر منبع و آیدی کانال❤️

📝برای تدریس پیام دهید
محمدرضا عظیمی‌فرد
🆔 @mrvj475
Download Telegram
🟡 فانکشنال اینترفیس و عبارت لامبدا
🕦زمان مطالعه:
2 دقیقه
#lambda #FunctionalInterface
〽️ @PieceJava
5👍1
🟡 متد رفرنس ها در جاوا Method Refrences
🕓زمان مطالعه:
3:30 دقیقه

پیش از مطالعه این بخش، بخش های زیر را مطالعه کنید:
- فانکشنال اینترفیس و عبارات لامبدا
- استریم ها در جاوا

در جاوای 8، متد رفرنس ها در واقع حالت کوتاه شده ی برخی از عبارات لامبدا برای صدا زدن یک متد هستند و به گونه ای ارجاع به متد را راحت تر و باعث افزایش خوانایی کد میشوند.

🔅نحوه ارجاع متد به یک متد استاتیک:
ClassName::MethodName
بعنوان مثال:
Integer::parseInt یا Math::max

🔅نحوه ارجاع به یک متد غیر استاتیک:
ReferenceVariable::MethodName
مثلا اگر نمونه ی ما s نام داشته باشد، داریم:
s::getName

🔅نحوه ارجاع به کنستراکتور یک کلاس
ClassName::new
برای مثال:
Function<String, Sample> createSample = Sample::new;

بعنوان مثال
🔰مثال:
list.forEach(e->System.out.println(e));
برای پیاده سازی این عبارت لامبدا به کمک متد رفرنس داریم:
list.forEach(System.out::println);

🔰 مثال 2:
BiFunction<Integer,Integer,Integer> findMax = (a,b)-> Math.max(a,b);
برای پیاده سازی این تابع داریم:
BiFunction<Integer,Integer,Integer> findMax =Math::max;

🔰 مثال 3:
ArrayList<Integer> a = new ArrayList<>();
a.add(1);
a.add(20);
a.add(-1);
a.add(4);
Comparator<Integer> comparator = (o1, o2) -> o1-o2;
a.stream()
.sorted(comparator::compare)
.forEach(System.out::println);

در این مثال اینترفیس Comparator را پیاده سازی کرده ایم که داده ها را بصورت صعودی مرتب میکند. حالا از طریق استریم متد compare از comparator را به sorted ارجاع داده ایم و همینطور اینکار را برای متد println نیز انجام داده ایم. پس نتیجه ی خروجی استریم، مرتب سازی داده و چاپ هر کدام از داده های لیست میباشد.
🔰 مثال 4:
public class Main {
public static void main(String[] args) {
Function<String, Sample> createSample = Sample::new;
Sample m = createSample.apply("Mohammad");
System.out.println(m.name());
}
}
record Sample(String name){}

در این نمونه یک تابع ساخته ایم که ورودی آن String و خروجی ان یک نمونه از رکورد Sample میباشد. در این مثال:
Sample::new
معادل
(s)-> new Sample(s)
میباشد.
————
#method #method_reference #lambda #stream
☕️@PieceJava
👍5