Lấy hai ví dụ mã:
if(optional.isPresent()) {
//do your thing
}
if(variable != null) {
//do your thing
}
Theo như tôi có thể nói sự khác biệt rõ ràng nhất là Tùy chọn yêu cầu tạo một đối tượng bổ sung.
Tuy nhiên, nhiều người đã bắt đầu nhanh chóng áp dụng Tùy chọn. Lợi thế của việc sử dụng tùy chọn so với kiểm tra null là gì?
if
tuyên bố rất ít ỏi trong thập kỷ trước và hiện tại mọi người đang sử dụng các khái niệm trừu tượng và lambdas.
if(x.isPresent) fails_on_null(x.get)
bạn thoát khỏi hệ thống loại và phải đảm bảo rằng mã sẽ không bị phá vỡ "trong đầu bạn" trong khoảng cách (được thừa nhận ngắn) giữa điều kiện và lệnh gọi hàm. Trong optional.ifPresent(fails_on_null)
hệ thống loại đảm bảo điều này cho bạn, và bạn không phải lo lắng.
Optional.ifPresent
(và các cấu trúc Java khác) là bạn chỉ có thể sửa đổi các biến cuối cùng có hiệu quả và không thể đưa ra các ngoại lệ được kiểm tra. Đó là lý do đủ để thường xuyên tránh ifPresent
, không may.