Đối tượng Optional trong Java có 3 phương thức với tên bắt đầu là or(). Trong bài viết này, chúng ta sẽ cùng nhau tìm hiểu về chúng và sự khác nhau giữa chúng là gì các bạn nhé!
Đầu tiên, mình có thể đề cập là phương thức orElse().
Phương thức này được sử dụng để trả về một giá trị default trong trường hợp đối tượng Optional của chúng ta là empty.
Tham số của phương thức này là giá trị default sẽ được trả về.
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package com.huongdanjava.javaexample; import java.io.IOException; import java.util.Optional; public class Example { public static void main(String[] args) throws IOException { Optional<String> optional = Optional.empty(); System.out.println(optional.orElse("Hello Huong Dan Java")); } } |
Kết quả:
Phương thức or() thứ 2 mà mình muốn đề cập là phương thức orElseGet() của đối tượng Optional.
Tham số của phương thức này là một Functional Interface Supplier. Các bạn có thể xem thêm thông tin về interface Supplier tại đây.
Mục đích của phương thức này cũng giống như phương thức orElse() nhưng trong trường hợp này, giá trị default trả về sẽ được lấy từ Functional Interface Supplier.
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
package com.huongdanjava.javaexample; import java.io.IOException; import java.util.Optional; public class Example { public static void main(String[] args) throws IOException { Optional<String> optional = Optional.empty(); System.out.println(optional.orElseGet(() -> "Hello Huong Dan Java")); } } |
Kết quả:
Phương thức thứ 3 là phương thức or().
Phương thức này được giới thiệu từ Java 9.
Tham số của phương thức này cũng là một Functional Interface Supplier.
Phương thức này giúp chúng ta lúc nào cũng có một đối tượng Optional không rỗng. Nếu đối tượng Optional không rỗng thì nó sẽ return lại chính đối tượng Optional này còn ngược lại nó sẽ return lại đối tượng Optional mà đối tượng Supplier tạo ra.
Ví dụ:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
package com.huongdanjava.javaexample; import java.io.IOException; import java.util.Optional; public class Example { public static void main(String[] args) throws IOException { String s = null; Optional<String> opt = Optional.ofNullable(s); Optional<String> result = opt.or(() -> Optional.of("Thanh")); System.out.println(result); } } |
Kết quả: