Java 자체하지 않는 선박으로 이러한 주석이 있습니다.
대신에,거기에는 약 10 이 서로 호환되지 않에서 아이디어는 대부분의 작업은 완전히 다르게 적용하는 다른 의미가 무엇 NonNull
즉,당신은 그것을 둘 수 있는,그리고 어떻게 작동합니다.
Oof. 이것은 매우 불행한 일이 기본으로 사용하는 아이디어를 주석을 추가 이 내용은 훨씬 우수한 선택과 같은 주어진,그것은 것 전적으로 호환되지 않환하여 기존 코드로의 침체 obsolecence 과는 달리, Optional
.
그래서,당신이 좋아하는 일 찾기고,그것을 포함한 프로젝트에서 동일한 방법은 당신이 포함되는 모든 타사 종속적에 포함하여 귀하의 Maven/Gradle/Ant+ivy/etc(빌드 파일의 목록의 종속성).
Intellij 는 그것의 자신의 취 null 이 아닌과 입니다. 그것은 아마도 가장 편리합니다. 그에 대한 아이디어를 이러한 주석을 의미는 열등1. 검사 프레임워크가 최고,이클립스는 먼 최고의 두 번째,모든 것이 다른 사람(를 포함하여 intellij s)공유하는 세 번째 장소다. 가을에서 찾을 수 있 검사 프레임워크 또는 거 같 eclipse 에서 이러한 주석이 있습니다. 그러나 내가 의심 intellij 의 null 시스템 확인 할 수 있는 완전히 이해 더 많은 고급 추가 @PolyNull
다,그래서 이 추가적인 표현력으로 낭비하고 있습니다. 보너스로,intellij 선박의 무리와 함께 데이터에 대해 무엇이 올바른 미리 부드러다.주석 것에 중요한 라이브러리입니다.
마지막 중 하나입니다 중요한:가장 일반적으로 사용되는 자바 라이브러리 포함 java.*
자체에 있지 않는 이러한 주석작업 및 반 null 주석 코드는 가장 확실히 매우 실망 운동;비용을 크게 이득을 중요하다. 유일한 솔루션을 수정하는 라이브러리를 사용할 권리와 정보를 미리 부드러다.하지만 이것은 작품의 톤. 다행히도,intellij 을 많이 했습니다.
제가 기대하는 것(이클립스가 이러),는 quickfix(CMD+1mac,CTRL+1 에 비 mac,최소자의 경우 메모리의 기본 단축키를 나)에는'자동으로 추가 이클립스's 미리 부드러다.주석을 클래스패스'(또는 귀하의 경우에는,intellij 의,of course). 는 경우에는 어떻게든 나타나지 않는, 이 페이지에서 intellij 문서 를 설명하는 방법을 정확하게 추가 org.jetbrains.annotations
라이브러리를 포함하는들을 미리 부드러다.주석을 귀하의 프로젝트입니다. 사실,이러한 문서를 나타내는 것,참으로,quickfix 메뉴가 제안 당신은 옵션이 자동으로 추가 이 라이브러리는 솔루션으로 오류는 당신 @NonNull
노드에서의 소스 코드입니다.
[1]장에서 미리 부드러다.주석 제한이 자신에 의해 상당히 수 있도록 주석에서만 필드 방법(뜻:무엇을 반환한다)및 매개 변수를 작성할 수 있습니다. 그러나,하나 있을 수 있는 확실히지 않는 null List
의할 수도 있었던-null Map
인스턴스는 지도 확실히지 않는 null String
을 수 있습 null Integer
: @NonNull List<@Nullable Map<@NonNull String, @Nullable Integer>>
. 주석 시스템 가능을 쓰는 경우에만 귀하의 주석은 설정으로 TYPE_USE. 검사 프레임워크 및 이클립스's 미리 부드러다.주석처럼 일하는 대부분의 다른 사람들이지 않고,따라서 적은 표현입니다. CheckerFramework 한 단계 더 나아가서 작성할 수 있게 해준의 개념을'어느 미리 부드러다.괜찮'. 다만 다음과 같은 제네릭은 3 양식(List<Integer>
고 List<? super Integer>
고 List< extends Integer>
면,제네릭이 참여,2nullities(중지 않 null,또는 확실히 null 은 허용)은 더 이상 충분에,당신이 더 필요 nullities. 검사 프 @PolyNull
이할 수 있습 링크 nullities:할 수 있는 예를 들어 쓰이는 방법에 checkerframework 지만 아마도 그것을 쓰는 제대로 입력 intellij 의,또는 그 문제에 대한 이클립스's:
public void duplicateFirstMatch(List<T> elems, Predicate<T> matcher);
아이디어가:이 방법을 실행하는 정규에 대한 각각의 요소의 목록에서,그리고 일치하는 요소를 추가합니다. 이 방법을 작동할 수 있는 경우 T
으로 간주됩'@null 이 아닌'(주는 null 값은 null 이 될 수 없다 추가 코드,너무 아닌 미리 부드러다.의 요소가 될 수 없을 위반하여다)하지만,그것은 작품은 단지뿐만 아니라우 T
가 @Nullable
제공하는 정도의 @Nullable T
물론:이 코드가 추가 할 수 있습니다 null 목록 하지만 괜찮아요.
따라서 T
도 널나 null 이 아닌 경우,그러나 Ts 에서 언급된 서명 할 필요가 일치하는 자신의 nullities. @PolyNull
이 문제를 해결합니다.