Nhiều lần tôi thấy mình không kiểm tra khi tìm nạp một giá trị từ một số phân cấp dữ liệu để tránh NullPulumExceptions, điều mà tôi thấy dễ bị lỗi và cần rất nhiều bản tóm tắt.
Tôi đã viết một thói quen rất đơn giản cho phép tôi bỏ qua việc kiểm tra null khi tìm nạp một đối tượng ...
public final class NoNPE {
public static <T> T get(NoNPEInterface<T> in) {
try {
return in.get();
} catch (NullPointerException e) {
return null;
}
}
public interface NoNPEInterface<T> {
T get();
}
}
Tôi sử dụng nó một chút như thế này ...
Room room = NoNPE.get(() -> country.getTown().getHouses().get(0).getLivingRoom());
Điều trên dẫn đến việc tôi nhận được một đối tượng Room hoặc null, mà không phải kiểm tra null tất cả các cấp độ cha.
Bạn nghĩ gì về những điều trên? Tôi đang tạo ra một mô hình có vấn đề? Có cách nào tốt hơn để làm điều này theo ý kiến của bạn?
Option
(hoặc Maybe
) đơn nguyên :)
java.util.Optional
thay vì null để thể hiện dữ liệu bị thiếu không? Điều này cung cấp các tiện ích tiện dụng cho cả trường hợp bạn mô tả và các trường hợp bạn muốn tiếp tục với dữ liệu mặc định thay vì chỉ trả lại một điều kiện thất bại ở cuối chuỗi ..