Giới thiệu về đối tượng Optional trong Java – Hướng Dẫn Java

Trong bài viết trước về NullPointerException trong Java, mình đã trình diễn với những bạn một số ít trường hợp hoàn toàn có thể xảy ra lỗi NPE và cách xử lý để tránh chúng như thế nào. Từ Java 8 trở đi, tất cả chúng ta có một cách khác để tránh NullPointerException nữa, đó chính là sử dụng đối tượng người dùng Optional. Cụ thể nó như thế nào, tất cả chúng ta sẽ cùng nhau tìm hiểu và khám phá trong bài viết này những bạn nhé !
OK, khởi đầu nào những bạn …

Đối tượng Optional là một đối tượng generic, nó là một container cho một object reference. Điều này có nghĩa, bạn khai báo một biến tham chiếu tới một đối tượng, biến này có thể đã được khởi tạo hoặc chưa khởi tạo, và đối tượng Optional này sẽ chứa biến tham chiếu này.

Chúng ta hoàn toàn có thể xem Optional như thể một stream có chứa 0 hoặc 1 thành phần là một object reference, 0 nếu object reference của tất cả chúng ta bị null, 1 nếu object reference của tất cả chúng ta đã được khởi tạo .
Điều này sẽ bảo vệ là khi những bạn sử dụng biến tham chiếu của tất cả chúng ta trải qua đối tượng người dùng Optional, giá trị trả về sẽ do đối tượng người dùng Optional quản trị và do đó giá trị của biến tham chiếu này sẽ không khi nào bị null .
Bây giờ, mình sẽ lấy một ví dụ để những bạn tưởng tượng cách sử dụng đối tượng người tiêu dùng Optional nhé những bạn !

Giả sử mình có một phương pháp dùng để lấy ngày sinh của một sinh viên dựa vào id mà mình truyền vào, sau khi giải quyết và xử lý một số ít trường hợp, trường hợp sau cuối method này trả về null. Cụ thể phương pháp đó như sau :

1234

publicDategetDateOfBirth(intstudentId){

/ / Do something

returnnull;

}

Bây giờ, mình sẽ sử dụng method này và không may là nó trả về null và mình bị NPE .

Giới thiệu về đối tượng Optional trong Java

Trong trường hợp này, mình hoàn toàn có thể sử dụng đối tượng người dùng Optional để handle trường hợp NullPointerException như sau :

123456789101112131415161718

packagecom.huongdanjava;

importjava.util.Date;

importjava.util.Optional;

publicclassExample{

publicDategetDateOfBirth

(

intstudentId){

/ / Do something

returnnull;

}

publicstaticvoidmain(String[]args){

Examplee=newExample();

Optional

date=Optional.ofNullable(e.getDateOfBirth(1));

date.ifPresent(d->System.out.println(d.getDate()));

}

}

Trong ví dụ này, mình đã khởi tạo một đối tượng người tiêu dùng Optional chứa một biến tham chiếu đến kiểu tài liệu Date, biến tham chiếu này hoàn toàn có thể null hoặc không tùy vào giá trị của phương pháp getDateOfBirth ( ) .
Và ở đoạn code dưới, mình sử dụng phương pháp ifPresent của đối tượng người tiêu dùng Optional với Lambda Expression để in ra ngày trong trường hợp biến tham chiếu này khác null .

Thử chạy ví dụ này, các bạn sẽ thấy không còn lỗi NPE xuất hiện nữa.

1.6 / 5 – ( 14 bầu chọn )