tôi nghĩ Java có đánh giá ngắn mạch, tuy nhiên dòng này vẫn còn ném một con trỏ ngoại lệ null:Java ngắn mạch đánh giá
if((perfectAgent != null) && (perfectAgent.getAddress().equals(entry.getKey()))) {
Trong trường hợp này perfectAgent
là null
, vì vậy tôi chỉ muốn toàn bộ biểu thức để trở false
nhưng ứng dụng của tôi vẫn gặp sự cố trên dòng này với NullPointerException.
EDIT, phản ứng chung:
Kể từ perfectAgent
là null
, không có gì ở bên phải của &&
nên được thực thi, vì nó là không thể đối với sự biểu hiện đến mức khó tin. Thêm vào vấn đề, không thể thực hiện perfectAgent.getAddress()
vì perfectAgent
không chứa tham chiếu hợp lệ (nó là null và tất cả). Tôi đang cố gắng sử dụng đánh giá ngắn mạch để không phải kiểm tra null trong một tuyên bố riêng biệt mà làm cho logic cẩu thả hơn.
EDIT 2 (hoặc, tôi là một thằng ngốc): Vâng, giống như nhiều thứ trong cuộc sống, bạn tìm ra câu trả lời ngay sau khi thông báo với thế giới rằng bạn là một moron. Trong trường hợp này, tôi đã tắt tính năng tự động xây dựng của Eclipse trong khi thực hiện một việc khác và không bật lại, vì vậy tôi đã gỡ lỗi các tệp lớp không khớp với nguồn của tôi.
Bạn đã kiểm tra mục nhập đó không phải là không? –
Mục nhập không phải là rỗng. – Donnie
Nếu 'perfectAgent' là' null' thì thực sự phần còn lại của dòng đó sẽ không được thực thi. Không thấy bất kỳ vấn đề với nó như bây giờ là:/ – Joey