IT이야기

@Nonnull 주석이 런타임에 확인되는 이유

cyworld 2021. 9. 29. 21:43
반응형

@Nonnull 주석이 런타임에 확인되는 이유는 무엇입니까?


다음 서명이있는 기능이 있습니다.

public static String myFunction(@Nonnull String param)

param을 null로 사용하여 호출하면 다음 예외가 발생합니다.

Caused by: java.lang.IllegalArgumentException: Argument for @Nonnull parameter 'param' of com/MyClass.myFunction must not be null
    at com.MyClass.$$$reportNull$$$0(MyClass.java) 

javax.annotation.Nonnull은 런타임에 확인되지 않아야 합니다.

누가 실제로 예외를 던지고 그 이유는 무엇입니까?

추신: Oracle JDK 1.8.0_102를 사용하여 IntelliJ IDEA 2016.3에서 디버그 모드로 Tomcat 서버를 실행합니다.


IntelliJ IDEA에서 프로젝트를 컴파일할 때 컴파일된 클래스의 바이트코드를 계측하여 다양한 @Nonnull주석 유형에 대한 런타임 검사를 추가합니다 . 이 동작은 다음 옵션에 의해 제어됩니다.

설정 | 빌드, 실행, 배포 | 컴파일러 | [x] null이 아닌 주석 메서드 및 매개 변수에 대한 런타임 어설션을 추가합니다.

"notnull 주석이 달린 메서드 및 매개변수에 대한 런타임 어설션 추가" 스크린샷

ReferenceURL : https://stackoverflow.com/questions/40847472/why-nonnull-annotation-checked-at-runtime

반응형