<aside>
💡 정리
- 어노테이션은 JDK 1.5부터 나옴 메타데이터를 제공하여 활용하는 기능
- 리플렉션은 런타임에 동적으로 클래스, 메서드, 필드를 검사 및 조작하는 기능
</aside>
어노테이션(Annotation)
개념
어노테이션은 자바 5부터 도입된 문법 요소로, 코드에 주석처럼 추가되어 특별한 의미나 기능을 수행하도록 합니다. 어노테이션은 메타데이터로서 프로그램의 동작에 영향을 미치지 않지만, 컴파일러나 런타임 환경에서 특정 작업을 수행하도록 정보를 제공합니다
용도
- 컴파일러 지시: 코드 작성 시 문법 오류를 체크하도록 정보를 제공.
- 빌드 및 배포 도구: 코드 자동 생성 및 배포 시 필요한 정보를 제공.
- 런타임 처리: 실행 시 특정 기능을 수행하도록 정보를 제공.
커스텀 어노테이션
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface CustomAnnotation {
String value();
}
메타 어노테이션
어노테이션을 정의할 때 사용하는 어노테이션으로, 어노테이션의 동작을 제어합니다
- @Retention: 어노테이션의 유지 정책을 지정 (예: RUNTIME, CLASS, SOURCE).
- @Target: 어노테이션이 적용될 수 있는 대상을 지정 (예: METHOD, FIELD).
- @Documented: 어노테이션 정보가 javadoc에 포함되도록 지정.
- @Inherited: 어노테이션이 서브클래스에 상속되도록 지정.
리플렉션(Reflection)
개념
리플렉션은 런타임에 클래스, 메서드, 필드 등의 정보를 동적으로 검사하고 조작할 수 있는 기능을 제공합니다. 이를 통해 접근 제어자와 상관없이 클래스의 내부 구조에 접근할 수 있습니다
사용법