Ở 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.
Function interface bao gồm 4 phương thức sau:
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)); } }
5.0
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
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)); } }
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
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)); } }
10