[java] JSR 305에서 제공되는 다양한 어노테이션 종류
  1. @NonNull: 이 어노테이션은 매개변수, 반환값, 필드 등의 null이 아닌 값이어야 함을 나타냅니다. 이를 통해 컴파일러는 null 체크를 강제할 수 있고, NullPointerException을 런타임에 방지할 수 있습니다.

  2. @Nullable: 이 어노테이션은 매개변수, 반환값, 필드 등의 null 값이 허용됨을 나타냅니다. 이를 통해 컴파일러는 null을 허용하는 경우를 알려줄 수 있고, 문제가 될 수 있는 잠재적인 NullPointerException에 대한 경고를 억제할 수 있습니다.

  3. @CheckReturnValue: 이 어노테이션은 메소드의 반환값을 사용하지 않을 경우 경고를 표시합니다. 일부 라이브러리에서는 메소드의 반환값을 무시하는 것이 실수일 수 있다고 판단하여 이 어노테이션을 사용합니다.

  4. @DefaultQualifier: 이 어노테이션은 특정 패키지나 클래스에 대한 기본적인 어노테이션을 지정합니다. 예를 들어, @DefaultQualifier(NonNull.class)로 패키지를 지정하면 해당 패키지의 모든 요소에 대해 @NonNull 어노테이션이 기본값으로 적용됩니다.

  5. @GuardedBy: 이 어노테이션은 특정 객체에 대한 동기화 관리를 나타냅니다. 여러 스레드가 접근하는 공유 객체에 대해 어떤 락이 사용되는지 명시적으로 지정함으로써 동기화 오류를 방지할 수 있습니다.

위에서 언급한 어노테이션은 JSR 305에서 제공되는 일부 어노테이션의 예시입니다. 이 외에도 많은 어노테이션이 존재하며, 자세한 내용은 JSR 305 문서나 관련 자료를 참조하시기 바랍니다.

참고 자료: