2016-06-10 4 views
0

방금 ​​주석을 발견하고 사용하기 시작했습니다. 나는 내가 컴파일 동안 불평을 new Clazz().test(null) 예상 클래스왜 @NotNull이 컴파일 타임 오류를 발생시키지 않습니까?

clazz implements interface 
{ 
@Override 
public void test(@NotNull CustomObject c) 
{ 
} 
} 

의 방법을 구현

interface { 
    public void test(@NotNull CustomObject c); 
} 

같은 @NotNull의 PARAM와 방법 서명을했다 인터페이스를 만들었지 만, 그렇지 않습니다. Intellij를 기반으로하는 Android 스튜디오를 사용하고 있습니다.

이 주석은 컴파일 타임 오류를 줄 것으로 예상되지 않으면 어떻게 사용됩니까?

+1

에 대한 리소스 링크를 확인하시기 바랍니다. IntelliJ의 경우 코드 내에'@ NotNull' 계약이 위반 될 때마다 IDE에서 경고를 출력합니다 (자세한 내용은 Jetbrains [docs] (https://www.jetbrains.com/help)를 참조하십시오) /idea/2016.1/nullable-and-notnull-annotations.html) – codejanovic

답변

0

나는 당신이 잘못된 porpouse에 사용하고 있다고 생각합니다.

방법은, null를 돌려 안 :

@NotNull 주석 @NotNull

는 다음을 선언하는 명시 적 계약 사실이다. 변수 (예 : 필드, 로컬 변수 및 매개 변수)는 null 값을 포함 할 수 없습니다. 자세한 정보 및 코드 예제는 온라인 사용 방법을 참조하십시오.

IntelliJ IDEA는 이러한 계약을 위반했음을 경고합니다.

예 당신이 바로,`@의 NotNull`는 기본적으로 자바에서 시간 오류를 컴파일 얻을하는 데 사용되지 않습니다되는 추가 정보를 https://www.jetbrains.com/help/idea/2016.1/nullable-and-notnull-annotations.html

+0

알겠습니다. –

관련 문제