Functional Interface trong Java

Trong những bài viết về Lambda Expression, mình đã giới thiệu với các bạn sơ qua về Functional Interface và tầm quan trọng của nó khi sử dụng Lambda Expression trong Java code. Trong bài viết này, mình sẽ nói chi tiết về Functional Interface hơn các bạn nhé!

Định nghĩa Functional Interface

OK, đầu tiên mình xin nói về định nghĩa của Functional Interface một cách đầy đủ và chi tiết nhất.

  • Đầu tiên, chắc chắn rồi, Functional Interface phải là một interface.

Ví dụ:

  • Thứ hai là nó chỉ có một và duy nhất một phương thức abstract. Lambda Expression sẽ là người implement phương thức abstract này.

Ví dụ, phương thức say() của interface sau là một phương thức abstract như thế:

  • Cái thứ ba, không bắt buộc nhưng các bạn nên biết là: chúng ta có thể sử dụng annotation @FunctionalInterface để đánh dấu class mà chúng ta muốn là một Functional Interface.

Ví dụ:

Sau khi một interface được đánh dấu với annotation trên, các bạn không thể thêm mới một phương thức abstract khác. Nếu cố tình thì sẽ gặp lỗi compile ngay.

Functional Interface trong Java


Một số Functional Interface trong Java

Từ Java 7 trở về trước, chúng ta có một số interface có thể coi chúng là những Functional Interface từ Java 8 trở đi, ví dụ như:

  • FileFilter với chỉ một phương thức abstract:

  • ActionListener cũng với chỉ một phương thức abstract:

Từ Java 8 trở đi, Java cung cấp cho chúng ta thêm nhiều Functional Interface khác. Chúng được định nghĩa trong package java.util.function:

Functional Interface trong Java

Các bạn có thể tìm hiểu thêm về chúng tại đây. Sau này, mình sẽ có những bài viết về các Functional Interface nằm trong package này. Các bạn theo dõi Hướng Dẫn Java để cập nhập nhé!

5/5 - (1 bình chọn)

4 thoughts on “Functional Interface trong Java

Add Comment