2012-03-23 5 views
8

사람이 나를 설명 할 수 :FindBugs가 null에 대한 검사를 무시하는 이유는 무엇입니까? 이것은 findbug 경고가 발생하는 이유

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

을이 작동된다

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

경고 : 호출 된 메서드의 값을 반환하기 때문에 가능한 널 포인터 역 참조입니다.

예제 1은 경고가 아니어야 FindBugs에 알릴 수 있습니까?

+0

경고 중 ??? – UmNyobe

+0

경고는 무엇입니까? – montardon

+0

죄송합니다. 붙여 넣기를 잊어 버리니 죄송합니다. -effort를 실행하여 – soulcinder

답변

15

아마도 m.getModifiedDate()이 첫 번째 호출에서는 null이 아닌 값을 반환하지만 두 번째 호출에서는 null 값을 반환 할 가능성이 있기 때문에 가능합니까?

+0

오 좋아! 체크가 충분하면 Findbugs에게 sorrounding을 알려주는 메소드가 있습니까? – soulcinder

+0

null 또는 null이 아닌 값을 반환하면 첫 번째 경우에는 경고가 발생하고 두 번째 경우에는 경고가 표시 될 수 있습니다. –

+1

@ChandraSekhar : 두 번째 경우에는'getModifiedDate()'를 한 번만 호출합니다. nullity 검사 후에'date' 값이 null이 될 것입니다 ... –