Java 9에서는 @Deprecated 어노테이션에 두 가지 새로운 속성이 추가되었습니다. 바로 since와 forRemoval입니다. 이 두 속성은 모두 선택 사항(optional)이며, 값을 지정하지 않으면 각각의 기본값(default value)이 적용됩니다.
since 속성
since는 문자열(String) 타입의 속성으로, 해당 API가 어떤 버전부터 사용 중단(deprecated)되었는지를 명시합니다. 기본값은 빈 문자열(empty string)입니다.
문법
@Deprecated(since="<버전>")
forRemoval 속성
forRemoval은 boolean 타입의 속성으로, 해당 API가 향후 릴리스에서 제거될 예정인지 여부를 나타냅니다. 값을 지정하지 않을 경우 기본값은 false입니다. 즉, forRemoval=true로 설정하면 이 API가 조만간 완전히 삭제될 것임을 개발자에게 경고하는 의미가 됩니다.
문법
@Deprecated(forRemoval=<boolean>)
예제 코드
아래 예제는 두 속성을 함께 사용하는 방법을 보여줍니다.
public class DeprecatedAnnotationTest {
public static void main(String[] args) {
DeprecatedAnnotationTest test = new DeprecatedAnnotationTest();
test.method1();
test.method2();
}
@Deprecated(since="7.0")
public void method1() {
System.out.println("@Deprecated(since=\"7.0\")");
}
@Deprecated(since="5.0", forRemoval=true)
public void method2() {
System.out.println("@Deprecated(since=\"5.0\", forRemoval=true)");
}
}실행 결과
@Deprecated(since="7.0") @Deprecated(since="5.0", forRemoval=true)
정리
Java 9 이전에는 @Deprecated 어노테이션이 단순히 '사용 중단'이라는 사실만 표시할 수 있었습니다. 하지만 Java 9부터 since로 폐기된 버전 정보를 제공하고, forRemoval로 향후 제거 계획 여부를 명확히 전달할 수 있게 되어 API 유지보수와 마이그레이션 안내가 한층 수월해졌습니다.