سری مطالب آموزش جاوا ۸ : بخش پنجم – برخی از رابطهای تابعی
- LongToDoubleFunction
نمایشدهنده تابعی است که آرگومانی با مقداری از نوع long میپذیرد و نتیجهای با مقدار double برمیگرداند.
- LongToIntFucntion
تابعی را نشان میدهد که آرگومانی با مقدار long میپذیرد و نتیجهای از نوع عدد برمیگرداند.
- LongUnaryOperator
عملیاتی را روی تنها یک عملوند با مقدار long نشان میدهد که نتیجهای از نوع long تولید میکند.
- ObjDoubleConsumer<T>
عملیاتی را نشان میدهد که مقداری از نوع object و آرگومانی از نوع double میپذیرد و نتیجهای برنمیگرداند.
- ObjIntConsumer<T>
عملیاتی را نشان میدهد که مقداری از نوع object و آرگومانی از نوع int میپذیرد و نتیجهای برنمیگرداند.
- ObjLongConsumer<T>
عملیاتی را نشان میدهد که مقداری از نوع object و آرگومانی از نوع long میپذیرد و نتیجهای برنمیگرداند.
- Predicate<T>
نشاندهنده یک predicate (تابعی با مقدار بولی) از یک آرگومان است.
- Supplier<T>
نشاندهنده نتیجهای از نوع supplier است.
- ToDoubleBiFunction<T,U>
تابعی را نشان میدهد که دو آرگومان میپذیرد و نتیجهای از نوع double برمیگرداند.
- ToDoubleFunction<T>
نشاندهنده تابعی است که نتیجهای از نوع double برمیگرداند.
- ToIntBiFunction<T,U>
تابعی را نشان میدهد که دو آرگومان میپذیرد و مقداری از نوع int تولید میکند.
- ToIntFunction<T>
تابعی را نشان میدهد که مقداری از نوع int برمیگرداند.
- ToLongBiFunction<T,U>
تابعی را نشان میدهد که دو آرگومان میپذیرد و مقداری از نوع long برمیگرداند.
- ToLongFunction<T>
نشاندهنده تابعی است که مقداری از نوع long برمیگرداند.
- UnaryOperator<T>
عملیاتی را روی یک عملوند نشان میدهد که مقداری همنوع با همان عملوند برمیگرداند.
مثال رابطهای تابعی
اینترفیس Predicate<T> یک رابط تابعی است که یک متد test(Object) برای بازگرداندن مقداری از نوع بولی دارد. این اینترفیس نشان میدهد که object برای تشخیص true یا false بودن تست شده است.
برنامه جاوایی را که در زیر آمده است با ویرایشگری به انتخاب خودتان ایجاد کنید و مثلا میتوانید از مسیر زیر استفاده کنید:
C:/> JAVA.
Java8Tester.java
import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;
public class Java8Tester {
public static void main(String args[]) {
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9);
// Predicate<Integer> predicate = n -> true
nبهعنوان پارامتر برای متد test اینترفیس Predicate پاس داده میشود //
متد test بدون توجه به مقداری که n دارد همیشه true برمیگرداند. //
System.out.println(“Print all numbers:”);
// را به عنوان پارامتر پاس میدهد n
eval(list, n->true);
// Predicate<Integer> predicate1 = n -> n%2 == 0
n بهعنوان پارامتر برای متد test اینترفیس Predicate پاس داده میشود//
اگر نتیجه باقیمانده تقسیم n بر 2 صفر شود متد test ،true برمیگرداند//
System.out.println(“Print even numbers:”);
eval(list, n-> n%2 == 0 );
// Predicate<Integer> predicate2 = n -> n > 3
n بهعنوان پارامتر برای متد test اینترفیس Predicate پاس داده میشود//
متد test اگر n بزرگتر از 3 باشد true بازمیگرداند//
System.out.println(“Print numbers greater than 3:”);
eval(list, n-> n > 3 );
}
public static void eval(List<Integer> list, Predicate<Integer> predicate) {
for(Integer n: list) {
if(predicate.test(n)) {
System.out.println(n + ” “);
}
}
}
}
در اینجا ما اینترفیس Predicate را پاس میدهیم، که یک ورودی گرفته و مقداری از نوع بولین برمیگرداند. نتیجه را تایید کنید. کلاس را با استفاده از کامپایلر javac مانند زیر کامپایل کنید.
C:\JAVA>javac Java8Tester.java
حالا Java8Tester را مانند زیر اجرا کنید:
C:\JAVA>java Java8Tester
باید خروجی زیر را تولید کند:
چاپ همه اعداد:
1
2
3
4
5
6
7
8
9
چاپ اعداد زوج:
2
4
6
8
چاپ اعداد بزرگتر از 3:
4
5
6
7
8
9