사용할 @NonNull Java 주석
이 질문에 이미 답변이 있습니다.
이란 무엇입니까 최고의 '널 (null)이 아닌'주석?
의미에서 "최고"
- 표준 방식 예 : 미래 보장성 (예 : 표준 jdk 등의 지원)
- IDE 지원 (개발자를위한 사용법을 나타 내기 위해 Java 문서에 표시됨)
- findbugs와 같은 정적 분석 도구 지원
- 런타임 분석 지원
현재 세상의 모습은 다음과 같습니다. 더 많은 통찰력을 얻을 수 있습니다.
javax.validation.constraints.NotNull
( Docs )
+ javax 패키지는 따라서 미래 지향적 인 것처럼 보입니다-JSE가 아닌
JEE의 일부 . JSE에서는 추가 라이브러리 를 가져와야 합니다. -정적 분석 도구에서 지원되지 않음 (런타임 유효성 검사 만 해당)( 문서 )edu.umd.cs.findbugs.annotations.NonNull
- 외부 라이브러리 아닌javax
패키지
- 중단 findbugs 버전 3.x 보낸
(소나 findbugs 의해 때문에) 정적 분석을 위해 사용 +( 문서가 )javax.annotation.Nonnull
+ (findbugs으로) 정적 분석을 위해 사용
- JSR-305는 휴면 / 죽은 / 알려지지에 그대로 FB 메일 링리스트가 나타났다. 저자 Bill Pugh는 직접 질문을했지만 몇 년 동안 주에 대해 언급하지 않았습니다.( docs , 흥미로운 프리젠 테이션 )org.eclipse.jdt.annotation_2.0.0
+ 정적 분석에 사용됨 (하지만 findbugs가 아닌 Eclipse에서)-eclipse
소유 (독립형으로 사용하지 않음)( docs )org.jetbrains.annotations.NotNull
+ 정적 분석에 사용됨
(하지만 findbugs가 아닌 intelliJ에서)-IntelliJ 소유 (그러나 jar로 공개적으로 사용 가능)lombok.NonNull
( 문서 )
+ 코드 생성 제어에 사용
-독점 주석android.support.annotation.NonNull
( docs )
+ android studio의 정적 분석
-Android 전용 주석org.checkerframework.checker.nullness.qual.NonNull
( docs )
+ Java8의 일부인 JSR308 구현 (코드의 다른 부분에 주석을 작성하는 기능을 도입했지만 새 주석을 도입하지 않음)
+ 정적 코드 (하지만 findbug가 아님) 및 런타임 분석에 사용
-외부 라이브러리 그러나 자바 사람들 이 보증 하는 것 같습니다.
현재 나는 Checker Framework를 사용 하지만 다른 견해를 기대하고 있습니다.
[면책 조항] 여기에 질문을했지만 답변을받지 못했다는 것을 알고 있습니다 (또는 대답이 틀렸거나 불완전하거나 오래됨) [/ 면책 조항]
표준 @NonNull
주석 이 없습니다 . 이러한 주석을 만드는 것이 JSR 305의 목표였으며 오랫동안 버려졌습니다. @NonNull
JSR 305가 재구성 될 때까지 표준 주석 이 없습니다 . 오라클은 현재 그렇게 할 계획이 없습니다. (JEE 주석은 JSR 305의 범위를 벗어납니다.)
미래 보장을 위해 고려해야 할 가장 중요한 요소는 주석이 유형 주석인지 선언 주석인지 여부입니다. 때문에 @NonNull
오히려 변수 자체보다 변수 값의 속성을 말한다, 그것은 유형 약어해야합니다. 유형 주석이기 때문에에서와 같이 더 많은 위치에 주석을 작성할 수도 있습니다 List<@NonNull String>
.
@Target
주석의 정의 에서 메타 주석을보고 주석이 유형 주석인지 여부를 확인할 수 있습니다 . 이 글을 쓰는 시점에서 Checker Framework와 Eclipse 버전 만이 타입 어노테이션 인 것 같아서 선언 어노테이션 인 것보다 선택하겠습니다. 다른 어노테이션의 개발자도 유형 어노테이션이되도록 업데이트 할 수 있습니다. 나는 그들의 계획을 모른다.
유일한 단점은 유형 주석을 사용하려면 Java 8 컴파일러를 사용해야한다는 것입니다. 검사 프레임 워크는 자바 7 컴파일러에 의해 컴파일의 주석이 포함 된 코드를시키는 메커니즘을 가지고있다.
참고 URL : https://stackoverflow.com/questions/35892063/which-nonnull-java-annotation-to-use
'Program Tip' 카테고리의 다른 글
와이드 스크린 모니터를 두 개 이상의 가상 모니터로 분할하는 방법이 있습니까? (0) | 2020.11.25 |
---|---|
GoogleTest vs CppUnit : 사실 (0) | 2020.11.25 |
배우 기반 시스템 구축을위한 디자인 패턴 / 모범 사례 (0) | 2020.11.25 |
파이썬 db-api : fetchone vs fetchmany vs fetchall (0) | 2020.11.25 |
성능 : 일반에서 파생 된 유형 (0) | 2020.11.25 |