2017-02-26 4 views
0

객체 instanceof를하고이 코드,널 내가 뭔가를하려고했다

boolean x = null instanceof Object; 
Object o = null; 
boolean y = o instanceof Object; 

그건 모두 거짓 반환 놀랄 일이 없다를 썼다. 내게 놀랐던 것은 IntelliJ IDEA가 y 일 때 항상 false이라고 말했지만 아무 것도 말하지 않았다면 x입니다. 이것은 무엇인가를 암시 하는가?

+3

IntelliJ가 전한 메시지는 * 정확히 *? 아마도'null instanceof Object'는 꽤 분명하지 않지만'o instanceof Object'는 수행 한 코드 분석으로 인해 false 일뿐입니다 - 이전에 'o'선언을 작성한 경우 상당히 빠를 수 있음을 암시하는 것 같습니다. null이 될 수있는 무언가에 대한 점검을 의도하지 않았기 때문에 버그. –

+1

다른 조건에서 y를 사용하고 있습니까? 그렇다면 InterlliJ는 변수를 더 이상 단순한'false'가 아니기 때문에보고합니다. 변수를 포함하는 명백한 값 대신'false'를 사용하는 것이 좋습니다. – Imran

답변

2

아마이 IDEA 코드 분석기가이 "유스 케이스"를 지원하지 못한다는 것을 의미합니다. 이 분석기는 이전에 null에 할당 된 변수의 사용을 감지하기 위해 (의도적으로) 코딩되었지만 코딩하는 동안 이는 매우 일반적인 실수이기 때문에 null instance of Object 경우 매우 드뭅니다. 실제로 다른 것을 의미합니다.

소나, 이클립스 또는 IDEA와 같은 정적 코드 분석기에서 올바르게 감지 할 수없는 많은 구조가 있습니다. 걱정하지 않으셔도됩니다. IDE가 코드에서 실수를 범할 수는 없습니다.

+0

다른 구현은 없습니다. 후. –