Java에서 다음과 같이 선언 된 메소드를 보았습니다.
void foo(@Nullable Object obj)
{ ... }
@Nullable
여기 의 의미는 무엇입니까 ? 입력이 가능하다는 의미 null
입니까?
주석이 없으면 입력은 여전히 null 일 수 있으므로 그게 다가 아닌 것 같아요?
@Nullable
질문의 맥락에서 어떤 라이브러리를 제공 하고 있습니까? 그것은인가 검사기?
Java에서 다음과 같이 선언 된 메소드를 보았습니다.
void foo(@Nullable Object obj)
{ ... }
@Nullable
여기 의 의미는 무엇입니까 ? 입력이 가능하다는 의미 null
입니까?
주석이 없으면 입력은 여전히 null 일 수 있으므로 그게 다가 아닌 것 같아요?
@Nullable
질문의 맥락에서 어떤 라이브러리를 제공 하고 있습니까? 그것은인가 검사기?
답변:
이 주석은 일반적으로 제거하는 데 사용됩니다 NullPointerExceptions
. @Nullable
이 매개 변수는입니다 null
. 이러한 행동의 좋은 예는 Google Guice 에서 찾을 수 있습니다 . 이 경량 종속성 주입 프레임 워크에서이 종속성이있을 수 있음을 알 수 있습니다 null
. null
주석없이 전달하려고 하면 프레임 워크가 작업을 거부합니다.
더 많은 것은 주석 @Nullable
과 함께 사용될 수 있습니다 @NotNull
. 여기에서 올바르게 사용하는 방법에 대한 팁을 찾을 수 있습니다 . IntelliJ의 코드 검사는 주석을 확인하고 코드를 디버깅하는 데 도움이됩니다.
물론, 분명히 다른 생각이 있습니다. 내 세상에는 API 호출자, 데이터베이스 레코드, 이전 프로그래머 등과 같은 제어 할 수없는 제 3자를 다루기 때문에 "null을 전달하지 마십시오"를 강요 할 수 없습니다. . Java8 이상에서는 if
블록 보다 조금 더 깔끔한 접근 방식이 있습니다.
public String foo(@Nullable String mayBeNothing) {
return Optional.ofNullable(mayBeNothing).orElse("Really Nothing");
}
로 교체 .orElse
하여
예외를 발생시킬 수도 있습니다 orElseThrow(() -> new Exception("Dont' send a null"))
.
기능적으로 아무것도 추가하지 않는 @Nullable을 사용하지 않으려면 매개 변수의 이름을 지정 mayBe...
하여 의도를 명확하게 지정하십시오.