کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

رابط تابعی در Java 8

رابط های تابعی در Java 8

رابط های تابعی تنها یک کارکرد را دارند که نمایش دهند. برای مثال یک رابط Comparable همراه با یک متد واحد ‘compareTo’ برای مقایسه ی هدف و منظور کاربرد دارد. Java 8 رابط های تابعی زیادی را تعریف کرده است که می توان از آن ها در عبارت های لامبدا به صورت گسترده استفاده کرد. در ادامه لیستی از رابط های تابعی موجود در بسته ی java.util.Function را می توانید مشاهده کنید.
در ادامه لیست رابط های موجود در Java 8 را می توانید مشاهده کنید.

ردیف
رابط و توضیحات
1
BiConsumer< T,U >
بیانگر عملیاتی است که دو آرگومان ورودی را می گیرد و هیچ نتیجه ای برگشت نمی دهد.
2
BiFunction< T,U,R >
بیانگر تابعی است که دو آرگومان را می گیرد و یک نتیجه را تولید می کند.
3
BinaryOperator< T >
بیانگر عملیاتی است که دو عملوند از یک نوع را می گیرد و نتیجه را از همان نوع به صورت عملوند تولید می کند.
4
BiPredicate< T,U >
بیانگر گزاره ای (تابع بولی) از دو آرگومان است.
5
BooleanSupplier
بیانگر تهیه کننده ای از نتایج بولی است.
6
Consumer< T >
بیانگر عملیاتی است که تنها یک آرگومان ورودی را دریافت می کند و هیچ نتیجه ای را برگشت نمی دهد.
7
DoubleBinaryOperator
بیانگر عملیاتی بر روی دو عملوند با مقدار مضاعف است که نتیجه ی آن یک مقدار مضاعف است.
8
DoubleConsumer
بیانگر عملیاتی است که تنها یک آرگومان مضاعف را می گیرد و هیچ نتیجه ای را برگشت نمی دهد.
9
DoubleFunction< R >
بیانگر تابعی است که یک آرگومان مضاعف را می گیرد و یک نتیجه را تولید می کند.
10
DoublePredicate
بیانگر گزاره ای (تابع بولی) از یک آرگومان مضاعف است.
11
DoubleSupplier
بیانگر تهیه کننده ای از نتایج مضاعف است.
12
DoubleToIntFunction
بیانگر تابعی است که یک آرگومان مضاعف را می گیرد و نتیجه را به صورت عدد صحیح تولید می کند.
13
DoubleToLongFunction
بیانگر تابعی است که آرگومان مضاعفی را می گیرد و یک مقدار Long را نتیجه می دهد.
14
DoubleUnaryOperator
بیانگر عملیاتی بر روی یک عملوند با مقدار مضاعف است که نتیجه ی آن یک مقدار مضاعف است.
15
Function< T,R >
بیانگر تابعی است که یک آرگومان را می گیرد و یک نتیجه را برگشت می دهد.
16
IntBinaryOperator
بیانگر عملیاتی بر روی دو عملوند با عدد صحیح است که نتیجه ی آن یک عدد صحیح است.
17
IntConsumer
بیانگر عملیاتی است که یک آرگومان واحد صحیح را می گیرد و هیچ نتیجه ای را برگشت نمی دهد.
18
IntFunction< R >
بیانگر تابعی است که آرگومانی با مقدار صحیح را می گیرد و یک نتیجه را برگشت می دهد.
19
IntPredicate
بیانگر گزاره ای (تابع بولی) از یک آرگومان با مقدار صحیح است.
20
IntSupplier
بیانگر تهیه کننده ای از نتایج با مقدار صحیح است.
21
IntToDoubleFunction
بیانگر تابعی است که یک آرگومان با مقدار صحیح را می گیرد و نتیجه را با مقدار مضاعف تولید می کند.
22
IntToLongFunction
بیانگر تابعی است که یک آرگومان با مقدار صحیح را می گیرد و نتیجه را با مقدار Long تولید می کند.
23
IntUnaryOperator
بیانگر عملیاتی بر روی یک عملوند با مقدار صحیح است که نتیجه ی آن یک مقدار صحیح است.
24
LongBinaryOperator
بیانگر عملیاتی بر روی دو عملوند با مقدار Long است که نتیجه ی آن یک مقدار Long است.
25
LongConsumer
بیانگر عملیاتی است که تنها یک آرگومان با مقدار Long را می گیرد و هیچ نتیجه ای را برگشت نمی دهد.
26
LongFunction< R >
بیانگر تابعی است که آرگومان با مقدار Long را می گیرد و یک نتیجه را برگشت می دهد.
27
LongPredicate
بیانگر گزاره ای (تابع بولی) از یک آرگومان با مقدار Long است.
28
LongSupplier
بیانگر تهیه کننده ای از نتایج با مقدار Long است.
29
LongToDoubleFunction
بیانگر تابعی است که یک آرگومان با مقدار Long را می گیرد و نتیجه ای را با مقدار مضاعف تولید می کند.
30
LongToIntFunction
بیانگر تابعی است که آرگومانی را با مقدار Long می گیرد و یک نتیجه ی صحیح را برگشت می دهد.
31
LongUnaryOperator
بیانگر عملیاتی بر روی یک عملوند با مقدار Long است که یک نتیجه با مقدار Long را تولید می کند.
32
ObjDoubleConsumer< T >
بیانگر عملیاتی است که یک مقدار شیء و یک آرگومان با مقدار مضاعف را می گیرد و هیچ نتیجه ای را برگشت نمی دهد.
33
ObjIntConsumer< T >
بیانگر عملیاتی است که یک مقدار شیء و یک آرگومان با مقدار صحیح را می گیرد و هیچ نتیجه ای را برگشت نمی دهد.
34
ObjLongConsumer< T >
بیانگر عملیاتی است که یک مقدار شیء و یک آرگومان با مقدار Long را می گیرد و هیچ نتیجه ای را برگشت نمی دهد.
35
Predicate< T >
بیانگر گزاره ای (تابع بولی) از یک آرگومان است.
36
Supplier< T >
بیانگر تهیه کننده ای از نتایج است.
37
ToDoubleBiFunction< T,U >
بیانگر تابعی است که دو آرگومان را می گیرد و یک نتیجه با مقدار مضاعف را تولید می کند.
38
ToDoubleFunction< T >
بیانگر تابعی است که یک نتیجه ی با مقدار مضاعف را تولید می کند.
39
ToIntBiFunction< T,U >
بیانگر تابعی است که دو آرگومان را می گیرد و نتیجه ای با مقدار صحیح را تولید می کند.
40
ToIntFunction< T >
بیانگر تابعی است که نتیجه ای با مقدار صحیح را تولید می کند.
41
ToLongBiFunction< T,U >
بیانگر تابعی است که دو آرگومان را می گیرد و نتیجه ای با مقدار Long را برگشت می دهد.
42
ToLongFunction< T >
بیانگر تابعی است که نتیجه ای با مقدار Long را تولید می کند.
43
UnaryOperator< T >
بیانگر عملیاتی بر روی یک عملوند واحد است که نتیجه ای را از همان نوع عملوند خود تولید می کند.

رابط Predicate < T > یک رابط تابعی با متد test(Object) بوده که یک مقدار بولی را برگشت می دهد. این رابط بیانگر درست یا نادرست بودن شیء تست شده است.
با استفاده از یکی از ویرایشگرهای مورد نظر خود، برنامه ی Javaی زیر را مثلا در 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 is passed as parameter to test method of Predicate interface
      // test method will always return true no matter what value n has.
		
      System.out.println("Print all numbers:");
		
      //pass n as parameter
      eval(list, n- >true);
		
      // Predicate< Integer > predicate1 = n - > n%2 == 0
      // n is passed as parameter to test method of Predicate interface
      // test method will return true if n%2 comes to be zero
		
      System.out.println("Print even numbers:");
      eval(list, n- > n%2 == 0 );
		
      // Predicate< Integer > predicate2 = n - > n  > 3
      // n is passed as parameter to test method of Predicate interface
      // test method will return true if n is greater than 3.
		
      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

نتیجه باید به صورت زیر نمایش داده شود.

Print all numbers:
1
2
3
4
5
6
7
8
9
Print even numbers:
2
4
6
8
Print numbers greater than 3:
4
5
6
7
8
9

برای مطالعه سرفصل آموزش جاوا (J2SE) کلیک نمایید .


1397/10/25 2148 620
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...