Mình đã giới thiệu với các bạn method reference trong bài viết trước, ở bài viết này mình giới thiệu thêm với các bạn một khái niệm mới nữa: đó là constructor reference. Cũng giống như method reference, constructor reference được sử dụng để rút gọn biểu thức Lambda Expression. Cụ thể nó như thế nào, các bạn hãy đọc tiếp nhé!
Giả sử các bạn đang làm việc với một Lambda Expression có dạng như sau:
1 |
(args) -> new ClassName(args) |
Trong biểu thức Lambda Expression này, phần body chúng ta chỉ có một đoạn code khởi tạo mới một đối tượng với constructor có hoặc không sử dụng các tham số argument.
Để ngắn gọn hơn, chúng ta có thể sử dụng constructor reference như sau:
1 |
ClassName::new |
Để lấy ví dụ cho khái niệm constructor reference này, mình sẽ sử dụng một số interface nằm trong package java.util.function.
- Với constructor không có tham số, mình sẽ sử dụng interface Supplier với biểu thức Lambda Expression như sau:
1 |
Supplier<List<String>> s = () -> new ArrayList<>(); |
Viết lại với constructor reference:
1 |
Supplier<List<String>> s = ArrayList::new; |
- Với constructor có một tham số, mình sẽ sử dụng interface Function với biểu thức Lambda Expression như sau:
1 |
Function<String, Integer> f = s -> new Integer(s); |
Viết lại với constructor reference:
1 |
Function<String, Integer> f = Integer::new; |