질문 이력:
애너테이션은 자바 5에서 프로그램의 논리를 변경하지 않고 바이트 코드에 메타 정보를 추가하기 위해 등장했습니다. 애너테이션을 사용하면 프레임워크, 컴파일러 또는 파서에 추가 정보를 쉽게 제공할 수 있습니다.
문제:
잘못 설계되거나 잘못 사용된 애너테이션은 코드 유지 관리를 복잡하게 만듭니다. 때때로 개발자는 애너테이션의 적용 가능성을 혼동하거나 자신만의 애너테이션을 만드는 방법을 이해하지 못하며, 애너테이션에 매개변수를 추가할 수 있는 가능성에 대해 알지 못합니다.
해결책:
자체 애너테이션 만들기:
import java.lang.annotation.*; @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface MyTest { String value() default ""; }
애너테이션 사용:
public class TestClass { @MyTest("Example") public void testMethod() {...} }
주요 특징:
애너테이션은 다른 애너테이션을 상속할 수 있습니까?
답변: 아니요, 자바의 애너테이션은 서로 상속을 지원하지 않습니다.
클래스의 모든 자식들에게 애너테이션 작업을 의무화할 수 있습니까?
답변: 직접적으로는 불가능합니다. 추가적인 확인을 위해 리플렉션을 사용하여 애너테이션의 존재를 수동으로 체크해야 합니다.
@Retention(Class)와 @Retention(RUNTIME)의 차이점은 무엇입니까?
답변:
프로젝트에서 XML 구성을 애너테이션으로 변경하려고 했지만 @Retention(RUNTIME)을 추가하지 않았습니다.
장점:
단점:
서버에서 실제 논리 호출을 추적하는 비즈니스 운영 감사를 관리하는 사용자 정의 애너테이션 @Audit를 방법에 설정했습니다.
장점:
단점: