기본 콘텐츠로 건너뛰기

라벨이 Bill Pugh인 게시물 표시

[ JAVA ] Google Guava 코드에서 @Nonnull, @Nullable, ... 의미

  Collection 관리 등의 이유로 인해서 Google 의 Guava 라이브러리를 참조해서 사용하고 있다. 여러 가지 상황들에 대한 코드 검토 중에 눈에 띄는 코드가 있어서 정리해 둔다.    @Nullable, @Nonnull 등등의 코드는 액면상으로 보면 뭔가 액션을 취하는 Annotation 코드다. 테스트를 위해서 클래스를 생성하고 해당 코드를 작성하면 "javax.annotation.Nonnull", "javax.annotation.Nullable" 이 필요하지만 찾을 수가 없는 상태다. 무엇이 문제일까?    상기에서 설명한 Annotation에 대해서 검색을 해 보면 자바 메모리 모델 (Java Memory Model) 과 FindBugs 로 유명한 Bill Pugh 교수팀에서 "JSR 305 - 소프트웨어 결함 탐지" 를 위한 Annotation 시작한 것으로 나온다. 그리고 이를 Google 의 Guava 에서 "google findbug jsr305" 팩키지로 배포 및 소스에서 사용하고 있는 것을 볼 수 있다.    실제 해당 Annotation을 코드에서 사용하기 위해서는 아래와 같이 해당 팩키지를 Maven Dependency로 설정해 주어야 사용할 수 있다. ... <dependency> <groupId>com.google.code.findbugs</groupId> <artifactId>jsr305</artifactId> <version>1.3.9</version> </dependency> ...   FindBugs 프로젝트에서 이미 Method Parameter 와 Return Type 들에 대해 @Nullable, @NonNull, @CheckForNull 등을 사용했으나 이제는 표준화를 위해서 JSR Spec 쪽에 적용을 하고 있는