Tôi có một phương thức được gán cho một đối tượng Set
. Phương thức mà đại biểu yêu cầu rằng Set
không chứa bất kỳ phần tử null nào. Tôi muốn check the precondition rằng Set
không chứa các phần tử null sớm, theo phương pháp trước khi phái đoàn. Mã rõ ràng làm làm như vậy là thế này:Cách gọn gàng để kiểm tra xem Tập hợp có chứa một số không
public void scan(Set<PlugIn> plugIns) {
if (plugIns == null) {
throw new NullPointerException("plugIns");
} else if (plugIns.contains(null)) {
throw new NullPointerException("plugIns null element");
}
// Body
}
Nhưng điều này là không chính xác, bởi vì Set.contains()
có thể ném một NullPointerException
nếu Set
thực hiện tự không cho phép các yếu tố null. Khi đó, việc bỏ qua NullPointerException
trong trường hợp đó sẽ hoạt động but would be inelegant. Có cách nào gọn gàng để kiểm tra điều kiện tiên quyết này không?
Có lỗ hổng thiết kế trong giao diện Set
không? Nếu triển khai Set
có thể không bao giờ chứa giá trị rỗng, tại sao thay vào đó không yêu cầu để luôn trả về false
? Hoặc có một vị từ isNullElementPermitted()
?
Nếu bạn có yêu cầu cụ thể như thế này, phân lớp 'Đặt' và không cho phép' null' đặt. Ngoài ra, tôi sẽ không sử dụng 'else' ở đây. –