programing

@Null 주석 사용법

minecode 2022. 12. 20. 21:54
반응형

@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

반응형