Ở 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:
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 itFunction<Integer, Double> half = a -> a / 2.0;// Applying the function to get the resultSystem.out.println(half.apply(10));}}
5.0
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 methodpublic static void main(String args[]){// Function which takes in a number and// returns half of itFunction<Integer, Double> half = a -> a / 2.0;// Now treble the output of half functionhalf = half.andThen(a -> 3 * a);// Applying the function to get the result// and printing on consoleSystem.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 methodpublic static void main(String args[]){// Function which takes in a number and// returns half of itFunction<Integer, Double> half = a -> a / 2.0;// Try block to check for exce3ptionstry {// Trying to pass null as parameterhalf = half.andThen(null);}// Catch block to handle exceptionscatch (Exception e) {// Print statementSystem.out.println("Exception thrown "+ "while passing null: "+ e);}}}
Output
Exception thrown while passing null: java.lang.NullPointerException
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 methodpublic static void main(String args[]){// Function which takes in a number and// returns half of itFunction<Integer, Double> half = a -> a / 2.0;// However treble the value given to half functionhalf = half.compose(a -> 3 * a);// Applying the function to get the resultSystem.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 itFunction<Integer, Double> half = a -> a / 2.0;// Try bloc kto check for exceptionstry {// Trying to pass null as parameterhalf = half.compose(null);}// Catch block to handle exceptionscatch (Exception e) {// Print statementSystem.out.println("Exception thrown "+ "while passing null: "+ e);}}}
Ouput :
Exception thrown while passing null: java.lang.NullPointerException
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 itFunction<Integer, Integer> i = Function.identity();// Print statementSystem.out.println(i.apply(10));}}
10