<aside> 💡

표준 어노테이션

어노테이션 설명 용도
@Override 컴파일러에게 재정의 하는 메서드라는 것을 알린다. 메서드명,반환값이 일치하는지 판단해서 오류를 발생시킨다.
@Deprecated 앞으로 사용되지 않을 것을 권장하는 대상에게 붙인다.
@SuppressWarnings 컴파일러의 특정 경고메세지가 나타나지 않게 해준다. 경고를 무시해준다.
@FunctionalInterface 함수형 인터페이스라는 것을 알린다.(JDK1.8) 람다식(인터페이스 - 추상메서드가 1개만 정의된 인터페이스)
@Retention 어노테이션의 유지 범위를 지정 런타임, 컴파일 등
@Documented Javadoc문서에 어노테이션 정보 포함 여부
@Inherited 자식클래스에게 상속될 수 있는 어노테이션 여부

메타 어노테이션


어노테이션 선언 시 규칙 정리

  1. 선언 키워드 : @interface

    public @interface MyAnnotation{
    	
    }
    
  2. 어노테이션 속성은 메서드 형태로 정의한다

    1. 추상메서드 형태로 정의를 해야한다

      public @interface MyAnnotation{
      			String value();
      			int version();
      }
      
  3. 속성의 반환 타입은 제한적이다

    1. 기본타입, String , Class<?>. 열거형, 다른 어노테이션, 배열
  4. 속성에 기본값을 정의할 수 있다.

    public @interface MyAnnotation{
    			String value() default "홍길동";
    			int version();
    }
    
  5. 속성이름이 value일 경우 특별 규칙

    @MyAnnotation(value=”xxx”)

    @MyAnnotation(”xxx”) → 속성 이름이 value

  6. 어노테이션 자체에는 예외를 던질 수 없다

  7. 속성은 매개변수를 가질 수 없다

리플렉션(Reflection)

→ 클래스, 메서드, 필드, 생성자 등의 정보를 프로그램 실행 중에 동적으로 조사하거나 조작할 수 있는 기능