Java 8 - Giao diện chức năng

Các giao diện chức năng có một chức năng duy nhất để trưng bày. Ví dụ: giao diện So sánh với một phương thức duy nhất 'CompareTo' được sử dụng cho mục đích so sánh. Java 8 đã định nghĩa rất nhiều giao diện chức năng được sử dụng rộng rãi trong các biểu thức lambda. Sau đây là danh sách các giao diện chức năng được định nghĩa trong gói java.util.Function.

Sr.No. Giao diện & Mô tả
1

BiConsumer<T,U>

Biểu diễn một phép toán chấp nhận hai đối số đầu vào và không trả về kết quả nào.

2

BiFunction<T,U,R>

Biểu diễn một hàm chấp nhận hai đối số và tạo ra một kết quả.

3

BinaryOperator<T>

Biểu diễn một phép toán dựa trên hai toán hạng cùng kiểu, tạo ra kết quả cùng kiểu với toán hạng.

4

BiPredicate<T,U>

Biểu diễn một vị từ (hàm có giá trị Boolean) gồm hai đối số.

5

BooleanSupplier

Đại diện cho một nhà cung cấp các kết quả có giá trị Boolean.

6

Consumer<T>

Biểu diễn một thao tác chấp nhận một đối số đầu vào duy nhất và không trả về kết quả nào.

7

DoubleBinaryOperator

Biểu diễn một phép toán dựa trên hai toán hạng có giá trị kép và tạo ra kết quả có giá trị kép.

số 8

DoubleConsumer

Đại diện cho một phép toán chấp nhận một đối số có giá trị kép duy nhất và không trả về kết quả nào.

9

DoubleFunction<R>

Biểu diễn một hàm chấp nhận một đối số có giá trị kép và tạo ra một kết quả.

10

DoublePredicate

Biểu diễn một vị từ (hàm có giá trị Boolean) của một đối số có giá trị kép.

11

DoubleSupplier

Đại diện cho một nhà cung cấp các kết quả có giá trị kép.

12

DoubleToIntFunction

Biểu diễn một hàm chấp nhận đối số có giá trị kép và tạo ra kết quả có giá trị int.

13

DoubleToLongFunction

Biểu diễn một hàm chấp nhận đối số có giá trị kép và tạo ra kết quả có giá trị dài.

14

DoubleUnaryOperator

Biểu diễn một phép toán trên một toán hạng có giá trị kép duy nhất tạo ra kết quả có giá trị kép.

15

Function<T,R>

Biểu diễn một hàm chấp nhận một đối số và tạo ra một kết quả.

16

IntBinaryOperator

Biểu diễn một phép toán dựa trên hai toán hạng có giá trị int và tạo ra kết quả có giá trị int.

17

IntConsumer

Biểu diễn một phép toán chấp nhận một đối số có giá trị int và không trả về kết quả nào.

18

IntFunction<R>

Biểu diễn một hàm chấp nhận một đối số có giá trị int và tạo ra một kết quả.

19

IntPredicate

Biểu diễn một vị từ (hàm có giá trị Boolean) của một đối số có giá trị int.

20

IntSupplier

Đại diện cho một nhà cung cấp các kết quả có giá trị int.

21

IntToDoubleFunction

Biểu diễn một hàm chấp nhận đối số có giá trị int và tạo ra kết quả có giá trị kép.

22

IntToLongFunction

Biểu diễn một hàm chấp nhận đối số có giá trị int và tạo ra kết quả có giá trị dài.

23

IntUnaryOperator

Biểu diễn một phép toán trên một toán hạng có giá trị int duy nhất tạo ra kết quả có giá trị int.

24

LongBinaryOperator

Biểu diễn một phép toán dựa trên hai toán hạng có giá trị dài và tạo ra kết quả có giá trị dài.

25

LongConsumer

Đại diện cho một phép toán chấp nhận một đối số có giá trị dài và không trả về kết quả nào.

26

LongFunction<R>

Biểu diễn một hàm chấp nhận một đối số có giá trị dài và tạo ra một kết quả.

27

LongPredicate

Đại diện cho một vị từ (hàm có giá trị Boolean) của một đối số có giá trị dài.

28

LongSupplier

Đại diện cho nhà cung cấp các kết quả có giá trị lâu dài.

29

LongToDoubleFunction

Biểu diễn một hàm chấp nhận đối số có giá trị dài và tạo ra kết quả có giá trị kép.

30

LongToIntFunction

Biểu diễn một hàm chấp nhận đối số có giá trị dài và tạo ra kết quả có giá trị int.

31

LongUnaryOperator

Biểu diễn một phép toán trên một toán hạng có giá trị dài duy nhất tạo ra kết quả có giá trị dài.

32

ObjDoubleConsumer<T>

Đại diện cho một phép toán chấp nhận đối số có giá trị đối tượng và đối số có giá trị kép và không trả về kết quả nào.

33

ObjIntConsumer<T>

Đại diện cho một phép toán chấp nhận một đối số có giá trị đối tượng và một đối số có giá trị int và không trả về kết quả nào.

34

ObjLongConsumer<T>

Đại diện cho một phép toán chấp nhận một đối số có giá trị đối tượng và một đối số có giá trị dài và không trả về kết quả nào.

35

Predicate<T>

Biểu diễn một vị từ (hàm có giá trị Boolean) của một đối số.

36

Supplier<T>

Đại diện cho một nhà cung cấp kết quả.

37

ToDoubleBiFunction<T,U>

Biểu diễn một hàm chấp nhận hai đối số và tạo ra một kết quả có giá trị kép.

38

ToDoubleFunction<T>

Biểu diễn một hàm tạo ra kết quả có giá trị kép.

39

ToIntBiFunction<T,U>

Biểu diễn một hàm chấp nhận hai đối số và tạo ra kết quả có giá trị int.

40

ToIntFunction<T>

Biểu diễn một hàm tạo ra kết quả có giá trị int.

41

ToLongBiFunction<T,U>

Biểu diễn một hàm chấp nhận hai đối số và tạo ra một kết quả có giá trị dài.

42

ToLongFunction<T>

Biểu diễn một hàm tạo ra kết quả có giá trị dài.

43

UnaryOperator<T>

Biểu diễn một phép toán trên một toán hạng duy nhất tạo ra kết quả cùng kiểu với toán hạng của nó.

Ví dụ về giao diện chức năng

Giao diện Predicate <T> là một giao diện chức năng có kiểm tra phương thức (Đối tượng) để trả về giá trị Boolean. Giao diện này biểu thị rằng một đối tượng được kiểm tra là đúng hay sai.

Tạo chương trình Java sau bằng cách sử dụng bất kỳ trình soạn thảo nào bạn chọn trong 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 + " ");
         }
      }
   }
}

Ở đây chúng ta đã chuyển giao diện Predicate, giao diện này nhận một đầu vào duy nhất và trả về Boolean.

Xác minh kết quả

Biên dịch lớp bằng cách sử dụng javac trình biên dịch như sau -

C:\JAVA>javac Java8Tester.java

Bây giờ hãy chạy Java8Tester như sau:

C:\JAVA>java Java8Tester

Nó sẽ tạo ra kết quả sau:

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