@Null 주석 사용법
자바에서 다음과 같이 선언된 메서드가 있습니다.
void foo(@Nullable Object obj)
{ ... }
의 의미는 무엇입니까?@Nullable
여기서요? 그 말은 입력이null
?
주석을 달지 않아도 입력은 여전히 null일 수 있으니, 그것뿐만이 아닐까요?
메서드는 늘 값을 받아들이며 메서드를 덮어쓸 경우 늘 값도 받아들이도록 명시되어 있습니다.
또한 FindBugs와 같은 코드 분석기에 대한 힌트 역할을 합니다.예를 들어 이러한 메서드가 먼저 null을 확인하지 않고 인수를 포기하면 FindBugs는 경고를 보냅니다.
이 주석은 일반적으로 다음을 제거하기 위해 사용됩니다.NullPointerExceptions
.@Nullable
이 파라미터는null
이러한 행동의 좋은 예는 Google Guice에서 찾을 수 있습니다.이 경량 종속성 주입 프레임워크에서는 이 종속성이 다음과 같을 수 있습니다.null
만약 당신이 합격하려고 한다면null
주석이 없으면 프레임워크는 그 작업을 거부하게 됩니다.
게다가@Nullable
와 함께 사용할 수 있습니다.@NotNull
주석입니다.여기서 올바르게 사용하는 방법에 대한 몇 가지 팁을 찾을 수 있습니다.IntelliJ의 코드 검사는 주석을 확인하고 코드를 디버깅하는 데 도움이 됩니다.
다양한 툴이 다음 의미를 해석할 수 있습니다.@Nullable
다르게.예를 들어 Checker Framework와 FindBugs는@Nullable
다르게.
물론 내 세계에서는 API 발신자, 데이터베이스 레코드, 전직 프로그래머 등 제어할 수 없는 제3자를 상대하고 있기 때문에 "Never pass a 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...
그래서 당신의 의도는 분명합니다.
언급URL : https://stackoverflow.com/questions/14076296/nullable-annotation-usage
'programing' 카테고리의 다른 글
MariaDB의 높은 메모리 사용량을 수정하는 방법 (0) | 2022.12.30 |
---|---|
임시 테이블의 크기를 제한하려면 어떻게 해야 하나요? (0) | 2022.12.20 |
Python foreach 등가물 (0) | 2022.12.20 |
php 사이트의 브라우저 캐시를 방지하는 방법 (0) | 2022.12.20 |
MariaDB - 두 엔티티 간에 다수의 관계 테이블을 만듭니다. (0) | 2022.12.20 |