ABOUT ME

Today
Yesterday
Total
  • 애너테이션 정리
    java 2021. 5. 11. 14:26

    표준 애너테이션과 메타 애너테이션

    표준 애너테이션

    - @Override : 오버라이딩된 메서드임을 명시하여 컴파일러가 해당 클래스의 부모 메서드를 찾아 동일한 메서드 확인

    - @Deprecated : 기능적으로 아무 의미 없으며 곧 사라질 것임을 사용자에게 알림

    - @SuppressWarnings : 경고메세지를 없애도록 약속

    - @FunctionalInterface : 함수형 인터페이스임을 알림

    - @Native : native메서드에서 참조되는 상수 앞에 붙인다.

     

    메타 애너테이션

    메타 애너테이션은 애너테이션을 위한 애너테이션이다. 애너테이션에서 주로 쓰이는 속성을 정할 때 사용한다.

     

    @Target

    애너테이션을 적용할 수 있는 대상을 지정한다. 대표적으로 타입, 필드, 메서드, 애너테이션, 파라미터 등등이 있다. MyAnnotation의 타겟을 TYPE로만 정했을 때 TargetClass에 붙인 애너테이션은 문제가 없지만 멤벼 변수 k에 애너테이션을 붙였을 때 컴파일 에러가 난 걸 확인할 수 있다.

     

    @Retention

    애너테이션의 유효범위를 지정할 때 사용한다. 주로 사용하는 건 SOURCE와 RUNTIME인데 SOUCE로 설정하면 해당 애노테이션은 컴파일 시에만 사용되고 런타임 시에는 메모리에 로드되지 않는다. 반면 RUNTIME으로 설정하면 런타임 시에도 애너테이션 정보를 활용할 수 있다.

     

     

    애너테이션 만들기

    애너테이션은 멤버필드처럼 요소를 가질 수 있고 메서드는 가질 수 없다. 또한 모든 요소는 애너테이션 생성 시 지정해줘야하며 디폴트 값을 지정한다면 생략 가능하다. 또한 요소이름이 value이고 유일할 경우 이름을 생략할 수 있다.

    애너테이션도 결국 객체이기 때문에 기본 메서드 equals(), hashCode(), toString() 메서드를 사용할 수 있다.

     

    애너테이션 요소 규칙

    - 요소 타입은 기본형, String, enum, 애너테이션, Class만 허용된다

    - ()안에 매개변수를 선언할 수 없다.

    - 예외를 선언할 수 없다.

    - 요소를 타입 매개변수로 선언할 수 없다.

     

     

    요소 접근하기

    클래스에서 애너테이션을 뽑아내 사전에 지정한 요소를 동적으로 확인할 수 있다. 

    'java' 카테고리의 다른 글

    람다 정리 및 예시  (0) 2021.05.19
    Thread 정리  (0) 2021.05.11
    컬렉션 정리  (0) 2021.05.10
    Java Garbage Collector  (0) 2021.05.10
    BeanUtils copyProperties 사용법 및 주의사항  (0) 2021.05.04

    댓글

Designed by Tistory.