HomeOur Team

Functional Interface trong Java 8 (Phần 2) - Cách triển khai

By manh.nguyen
Published in Solutions
December 06, 2022
2 min read

Ở trong phần 1, chúng ta đã nắm được khái niệm và tác dụng của Function Interface. Phần 2 này sẽ tiếp tục với cách thức để triển khai một Function Interface.

Phương thức trong Funtion Interface Function interface bao gồm 4 phương thức sau:

  • apply()
  • andThen()
  • compose()
  • identity()

Method apply()

Cú pháp: 

R apply(T t)

Tham số: Phương thức này chỉ nhận một tham số t là đối số của hàm

Kiểu trả về: Phương thức này trả về kết quả hàm thuộc kiểu R

Ví dụ :

import java.util.function.Function;
 
public class ApplyExample{
 
    public static void main(String args[])
    {
        // Function which takes in a number
        // and returns half of it
        Function<Integer, Double> half = a -> a / 2.0;
 
        // Applying the function to get the result
        System.out.println(half.apply(10));
    }
}
Output:
5.0

Method andThen()

Nó trả về một hàm tổng hợp trong đó hàm được tham số hóa sẽ được thực thi sau hàm đầu tiên. Nếu việc đánh giá một trong hai chức năng gây ra lỗi, thì nó sẽ được chuyển tiếp đến người gọi hàm tổng hợp.

Cú pháp:  

default <V> Function<T, V>
andThen(Function<? super R, ? extends V> after)

trong đó V là loại đầu ra của chức năng sau và của chức năng tổng hợp

Tham số: Phương thức này chấp nhận một tham số mà sau đó là hàm được áp dụng sau tham số hiện tại.

Giá trị trả về: Phương thức này trả về một hàm tổng hợp áp dụng hàm hiện tại trước rồi đến hàm sau

Ngoại lệ: Phương pháp này ném NullPulumException nếu hàm sau là null.

Ví du:

import java.util.function.Function;
 
public class AndThenMethodExample {
 
    // main driver method
    public static void main(String args[])
    {
        // Function which takes in a number and
        // returns half of it
        Function<Integer, Double> half = a -> a / 2.0;
 
        // Now treble the output of half function
        half = half.andThen(a -> 3 * a);
 
        // Applying the function to get the result
        // and printing on console
        System.out.println(half.apply(10));
    }
}

Output:

15,0

Ví dụ 2: Để chứng minh khi NullPulumException được trả về.

import java.util.function.Function;
 
public class AndThenMethodException {
 
    // Main driver method
    public static void main(String args[])
    {
 
        // Function which takes in a number and
        // returns half of it
        Function<Integer, Double> half = a -> a / 2.0;
 
        // Try block to check for exce3ptions
        try {
 
            // Trying to pass null as parameter
            half = half.andThen(null);
        }
 
        // Catch block to handle exceptions
        catch (Exception e) {
 
            // Print statement
            System.out.println("Exception thrown "
                               + "while passing null: "
                               + e);
        }
    }
}

Output

Exception thrown while passing null: java.lang.NullPointerException

Method compose()

Nó trả về một hàm tổng hợp trong đó hàm được tham số hóa sẽ được thực thi trước và sau đó là hàm đầu tiên. Nếu việc đánh giá một trong hai chức năng gây ra lỗi, thì nó sẽ được chuyển tiếp đến người gọi hàm tổng hợp.

Cú pháp: 

default <V> Function<V, R>
compose(Function<? super V, ? extends T> before)

Trong đó V là loại đầu vào của hàm before và của hàm tổng hợp

Tham số: Phương thức này chấp nhận một tham số trước đó là chức năng được áp dụng trước và sau đó là chức năng hiện tại

Giá trị trả về: Phương thức này trả về một hàm tổng hợp áp dụng hàm hiện tại sau hàm được tham số hóa

Ngoại lệ: Phương pháp này ném “NullPulumException” nếu hàm before là null.

Ví dụ 1:

import java.util.function.Function;
 
public class ComposeExample {
 
    // Main driver method
    public static void main(String args[])
    {
        // Function which takes in a number and
        // returns half of it
        Function<Integer, Double> half = a -> a / 2.0;
 
        // However treble the value given to half function
        half = half.compose(a -> 3 * a);
 
        // Applying the function to get the result
        System.out.println(half.apply(5));
    }
}
Output:
7,5

Ví dụ 2: Khi NullPulumException được trả về.

import java.util.function.Function;
 
public class ComposeExample{
 
    public static void main(String args[])
    {
        // Function which takes in a number and
        // returns half of it
        Function<Integer, Double> half = a -> a / 2.0;
 
        // Try bloc kto check for exceptions
        try {
 
            // Trying to pass null as parameter
            half = half.compose(null);
        }
 
        // Catch block to handle exceptions
        catch (Exception e) {
 
            // Print statement
            System.out.println("Exception thrown "
                               + "while passing null: "
                               + e);
        }
    }
}

Ouput :

Exception thrown while passing null: java.lang.NullPointerException

Method identity()

Phương thức này trả về một hàm trả về đối số duy nhất của nó.

Cú pháp:  

chức năng <T> tĩnh <T, T> danh tính ()

trong đó T biểu thị loại đối số và giá trị được trả về

Trả về: Phương thức này trả về một hàm trả về đối số của chính nó

Ví dụ 

import java.util.function.Function;
public class IdentityExample {
    public static void main(String args[])
    {
        // Function which takes in a number and
        // returns it
        Function<Integer, Integer> i = Function.identity();
 
        // Print statement
        System.out.println(i.apply(10));
    }
}
Output
10

Tags

java 8

Share

manh.nguyen

manh.nguyen

Developer

Expertise

Related Posts

Solutions
Functional Interface trong Java 8 (Phần 1)
December 06, 2022
3 min
© 2023, All Rights Reserved.
Powered By

Quick Links

HomeOur Team

Social Media