@Nullable 주석 사용 :내가 선언 자바 몇 가지 방법을 보았다
void foo(@Nullable Object obj)
{ ... }
여기 @Nullable
의 의미는 무엇입니까? 입력이 null
일 수 있음을 의미합니까? 주석이 없으면 입력은 여전히 null이 될 수 있습니다.
감사
@Nullable 주석 사용 :내가 선언 자바 몇 가지 방법을 보았다
void foo(@Nullable Object obj)
{ ... }
여기 @Nullable
의 의미는 무엇입니까? 입력이 null
일 수 있음을 의미합니까? 주석이 없으면 입력은 여전히 null이 될 수 있습니다.
감사
이 주석은 보통 NullPointerExceptions
을 제거하는 데 사용됩니다. @Nullable
은 종종이 매개 변수가 null
일 수 있다고 말합니다. 그러한 행동의 좋은 예가 Google Guice에서 찾을 수 있습니다. 이 경량 의존성 삽입 프레임 워크에서이 종속성은 null
일 수 있다고 알립니다. null
을 전달하려고하고 주석이 없으면 프레임 워크는 그 일을 거부합니다.
@Nullable
은 @NotNull
주석과 함께 사용할 수 있습니다. 여기에 find 몇 가지 도움말을 사용하여 올바르게 사용할 수 있습니다. IntelliJ의 코드 검사는 주석을 검사하고 코드를 디버그하는 데 도움이됩니다.
다른 도구는 @Nullable
의 의미를 다르게 해석 할 수 있습니다. 예를 들어, Checker Framework 및 FindBugs은 @Nullable
differently을 처리합니다.
@Nullable
클레임으로 주석 된 요소는 (메소드의 경우) 리턴하고 (매개 변수의 경우) 전달하고 (로컬 변수 및 필드의 경우) 완벽하게 유효합니다.
@NotNull
클레임으로 주석 된 요소는 메소드에 대해 반환하고 (매개 변수로) 전달하고 (로컬 변수 및 필드에 대해) 유지하는 것이 금지됩니다. 주석 또는 매개 변수 선언 방법들을 구현/재정 때
는 @Nullable
및 @NotNull
간의 공분산-contravariance 관계가있다. 주석 선언 방법을 구현
재정은/:
@NotNull
주석 자식 클래스 메소드에 대한 @NotNull
주석을 필요로한다. 부모 방법에 @Nullable
주석과@Nullable
또는 @NotNull
주석을 가질 수 있습니다.주석 매개 변수와 메소드를 구현재정은/:
@Nullable
주석 자식 클래스 메소드 매개 변수에 대한 @Nullable
주석을 필요로한다. 부모 방법 매개 변수의 @NotNull
주석과@Nullable
또는 @NotNull
주석 (또는 없음 중 ) 자식 클래스 메서드의 매개 변수 중 하나를 가질 수 있습니다.예 :
여기@Nullable
public static UserContext getThreadUserContext() {
TransactionParms tp = TransactionParms.getBoundParms();
return (tp == null) ? null : tp.getUserContext();
}
getThreadUserContext
방법 TransactionParms
의 인스턴스를 반환한다. 그 인스턴스는 다음과 같을 수 있습니다. Null
아래의 답에서, 주석은 null 값이 허용된다는 것을 알았습니다. 사용 된 곳의 예, 시도 할 수있는 코드 분석기 및 해석이 다를 수 있음을 알게되었습니다. 왜이 형식이 좋은지보십시오. + 1s, 특히이 질문을하는 경우. – icedwater
어떤 문맥에서'@ Nullable'을 제공하고있는 라이브러리가 있습니까? 그것 [Checker?] (https://checkerframework.org/manual/#nullness-checker) – 8bitjunkie