Java tut 44: Java Lambda

0
0
(0)

Biểu thức Java Lambda

Biểu thức Lambda đã được thêm vào Java 8.

Biểu thức lambda là một khối mã ngắn nhận tham số và trả về giá trị. Các biểu thức Lambda tương tự như các phương thức, nhưng chúng không cần tên và chúng có thể được triển khai ngay trong phần thân của một phương thức.


Cú pháp

Biểu thức lambda đơn giản nhất chứa một tham số duy nhất và một biểu thức:

parameter -> expression

Để sử dụng nhiều hơn một tham số, hãy đặt chúng trong dấu ngoặc đơn:

(parameter1, parameter2) -> expression

Diễn đạt bị hạn chế. Chúng phải trả về ngay một giá trị và chúng không thể chứa các biến, phép gán hoặc câu lệnh như ifhoặc for. Để thực hiện các hoạt động phức tạp hơn, một khối mã có thể được sử dụng với các dấu ngoặc nhọn. Nếu biểu thức lambda cần trả về một giá trị, thì khối mã phải có một returncâu lệnh.

(parameter1, parameter2) -> { code block }

Sử dụng biểu thức Lambda

Biểu thức lambda thường được truyền dưới dạng tham số cho một hàm:

Thí dụ

Sử dụng biểu thức lamba trong phương thức ArrayList‘s forEach()để in mọi mục trong danh sách:

import java.util.ArrayList;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    numbers.forEach( (n) -> { System.out.println(n); } );
  }
}

Hãy tự mình thử »

Các biểu thức Lambda có thể được lưu trữ trong các biến nếu kiểu của biến là một giao diện chỉ có một phương thức. Biểu thức lambda phải có cùng số lượng tham số và cùng kiểu trả về với phương thức đó. Java có nhiều loại giao diện được tích hợp sẵn, chẳng hạn như Consumergiao diện (được tìm thấy trong java.utilgói) được sử dụng bởi các danh sách.

Thí dụ

Sử dụng Consumergiao diện của Java để lưu trữ một biểu thức lambda trong một biến:

import java.util.ArrayList;
import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> method = (n) -> { System.out.println(n); };
    numbers.forEach( method );
  }
}

Hãy tự mình thử »

Để sử dụng biểu thức lambda trong một phương thức, phương thức phải có một tham số với giao diện một phương thức làm kiểu của nó. Việc gọi phương thức của giao diện sẽ chạy biểu thức lambda:

Thí dụ

Tạo một phương thức lấy biểu thức lambda làm tham số:

interface StringFunction {
  String run(String str);
} } } }

public class Main {
  public static void main(String[] args) {
    StringFunction exclaim = (s) -> s + "!";
    StringFunction ask = (s) -> s + "?";
    printFormatted("Hello", exclaim);
    printFormatted("Hello", ask);
  
  public static void printFormatted(String str, StringFunction format) {
    String result = format.run(str);
    System.out.println(result);
  

Hãy tự mình thử »

How useful was this post?

Click on a star to rate it!

Average rating 0 / 5. Vote count: 0

No votes so far! Be the first to rate this post.

Leave A Reply

Your email address will not be published.