ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 12 (4) 애너테이션
    Java 2023. 5. 31. 21:54
    반응형

    애너테이션이란?

    - 주석처럼 프로그래밍 언어에 영향을 미치지 않으며, 유용한 정보를 제공

    - 애너테이션의 사용예

     

     

     

    표준 애너테이션

    - java에서 제공하는 애너테이션

     

     

     

    @Override - 표준 애너테이션

    - 오버라이딩을 올바르게 했는지 컴파일러가 체크하게 한다.

    - 오바라이딩할 때 메서드 이름을 잘 못 적는 실수를 하는 경우가 많다

     

    - 오버라이딩할 때는 메서드 선언부 앞에 @Override를 붙이자.

     

     

     

    @Deprecated - 표준 애너테이션

    - 앞으로 사용하지 않을 것을 권장하는 필드나 매서드에 붙인다.

    - @Deprecated의 사용 예, Date클래스의 getDate( )

     

    - @Deprecated가 붙은 대상이 사용된 코드를 컴파일하면 나타나는 메시지

     

     

     

    @FunctionalInterface - 표준 애너테이션

    - 함수형 인터페이스에 붙이면, 컴파일러가 올바르게 작성했는지 체크

    - 함수형 인터페이스에는 하나의 추상메서드만 가져야 한다는 제약이 있음

     

     

    @SuppressWarnings - 표준 애너테이션

    - 컴파일러 경고메시지가 나타나지 않게 억제한다.

    - 괄호( ) 안에 억제하고자하는 경고의 종류를 문자열로 지정

     

    - 둘 이상의 경고를 동시에 억제하려면 다음과 같이 한다.

     

    cmd

     

     

     

    @SafeVarargs - 표준 애너테이션

    - 가변인자의 타입이 non-reifiable인 경우 발생하는 unchecked 경고를 억제

    - 생성자 또는 static이나 final이 붙은 메서드에만 붙일 수 있다.

      (오버라이딩이 가능한 메서드에 사용불가)

    - @SafeVarargs에 의한 경고의 억제를 위해 @SuppressWarnings를 사용

     

     

     

    메타 애너테이션

    - 메타 애너테이션은 애너테이션을 위한 애너테이션

    - 메타 애너테이션은 java.lang.annotation패키지에 포함

     

     

     

    @Target - 메타 애너테이션

     

     

     

    @Retention - 메타 애너테이션

    - 애너테이션이 유지(retention)되는 기간을 지정하는데 사용

     

    - 컴파일러에 의해 사용되는 애너테이션의 유지 정책은 SOURCE이다.

     

    - 실행시에 사용 가능한 애너테이션의 정책은 RUNTIME이다.

     

     

     

    @Documented, @Inherited - 메타 애너테이션

    - Javadoc으로 작성한 문서에 포함시키려면 @Documented를 붙인다.

     

    - 애너테이션을 자손 클래스에 상속하고자 할 때, @Inherited를 붙인다.

     

     

     

    @Repeatable

     

     

     

    애너테이션 타입 정의하기

    - 애너테이션을 직접 만들어 쓸 수 있다.

     

    - 애너테이션의 메서드는 추상 메서드이며, 애너테이션을 적용할 때 모두 지정해야한다.

                                                                                                                     (순서 상관없음)

     

     

     

    애너테이션의 요소

    - 적용시 값을 지정하지 않으면, 사용될 수 있는 기본값 지정 가능(null제외)

     

    - 요소의 이름이 value인 경우 생략할 수 있다.

     

    - 요소의 타입이 배열인 경우, 괄호{ }를 사용해야 한다.

     

     

     

    모든 애너테이션의 조상 - java.lang.annotation.Annotation

    - Annotation은 모든 애너테이션의 조상이지만 상속은 불가

     

    - 사실 Annotation은 인터페이스로 정의 되어 있다.

     

     

     

     

    마커 애너테이션 - Marker Annotation

    - 요소가 하나도 정의되지 않은 애너테이션

     

     

     

     

     

    애너테이션 요소의 규칙

    - 애너테이션의 요소를 선언할 때 아래의 규칙을 반드시 지켜야 한다.

     

    - 아래의 코드에서 잘못된 부분은 무엇인지 생각해보자.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    출처 : 남궁성의 정석코딩 - YouTube

     

    남궁성의 정석코딩

    자바의 정석 동영상 강의 채널입니다.(by 저자 남궁성)

    www.youtube.com

     

     

    반응형

    'Java' 카테고리의 다른 글

    12 (3) 열거형  (0) 2023.05.30
    12 (2) 지네릭스  (0) 2023.05.30
    12 (1) 지네릭스  (0) 2023.05.28
    11 (7) Collections  (0) 2023.05.27
    11 (6) HashMap  (0) 2023.05.26
Designed by Tistory.