2012-03-23 23 views
8

bất cứ ai có thể giải thích cho tôi tại sao điều này ném một cảnh báo findbug:Tại sao FindBugs bỏ qua kiểm tra của tôi cho null?

if (m != null && m.getModifiedDate() != null) 
    content.put("ModifiedDate", m.getModifiedDate().getTime()); 

và điều này đang làm việc:

if(m != null){ 
    Date date = m.getModifiedDate(); 
    if (date != null) 
     content.put("ModifiedDate", date .getTime()); 
} 

Cảnh báo: Có thể rỗng trỏ dereference do trở lại giá trị gọi là phương pháp.

Có thể cho biết FindBugs rằng Ví dụ số 1 không phải là cảnh báo không?

+0

cảnh báo nào ??? – UmNyobe

+0

Cảnh báo là gì? – montardon

+0

xin lỗi quên dán nó .. chỉnh sửa – soulcinder

Trả lời

15

Có thể vì m.getModifiedDate() có thể trả về giá trị không null trên lần gọi đầu tiên, nhưng giá trị null trên giây?

+0

oh Ok! Vì vậy, có một phương pháp để cho Findbugs rằng sorrounding nếu kiểm tra là đủ? – soulcinder

+0

Bạn có thể cho biết cách trả về null hoặc không null gây ra cảnh báo trong trường hợp đầu tiên và không phải trong trường hợp thứ 2. –

+1

@ChandraSekhar: Trong trường hợp thứ hai, chúng ta chỉ gọi 'getModifiedDate()' một lần - giá trị của 'date' sẽ không thay đổi thành null sau khi kiểm tra vô hiệu ... –

Các vấn đề liên quan