[자바의 신] 17장 어노테이션이라는 것도 알아야 한다

한지연·2023년 3월 27일
0

📘 어노테이션

  • 클래스나 메소드 등의 선언에 '@'를 사용하는 것
  • 컴파일러에게 정보를 알려줄 때 사용
  • 컴파일, 설치시의 작업을 지정할 때 사용
  • 실행할 때 별도의 처리가 필요한 경우 사용
  • 어노테이션은 상속되지 않음

📚 미리 정해져 있는 어노테이션

1️⃣ @Overrride

public class OverrideCheck extends Parent{
    public OverrideCheck(String name) {
        super(name);
    }

    @Override
    public String printName(String name) {
        return super.printName(name);
    }
}
  • 부모 클래스에 있는 메소드를 Override 했다는 것을 명시적으로 선언

2️⃣ @Deprecated

    @Deprecated
    public String printAnything(String word){
        return word;
    }
  • 클래스나 메소드가 더 이상 사용되지 않는 것을 선언, 사용시 경고
  • 에러가 아닌 경고이기 때문에 @Deprecated 어노테이션이 선언된 메소드나 클래스를 사용하여도 컴파일 되어 클래스 파일은 생성됨

3️⃣ @SupressWarnings

    @SuppressWarnings("deprecated")
    public String printDeprecatedMethod(String word){
        return printAnything(word);
    }
  • 의도적으로 코딩한 것임을 명시하여 경고를 받지 않음
  • 소괄호 속에 문자열을 넘겨줄 수 있음

📚 어노테이션을 선언하기 위한 메타 어노테이션

  • 어노테이션을 개발자가 선언할 때 사용

1️⃣ @Target([적용할 타입])

  • 어노테이션을 어떤 것에 적용할지 선언할 때 사용
요소타입 			| 대상
CONSTRUCTOR 	| 생성자 선언시
FIELD 			| enum 상수를 포함한 필드값 선언시
LOCAL_VARIABLE 	| 지역변수 선언시
METHOD 			| 메소드 선언시
PACKAGE 		| 패키지 선언시
PARAMETER 		| 매개변수 선언시
TYPE 			| 클래스, 인터페이스, enum 등 선언시

2️⃣ @Retention

  • 얼마나 오래 어노테이션 정보가 유지되는지 선언
SOURCE 	| 컴파일시 사라짐
CLASS 	| 컴파일러에 의해서 참조 가능, 가상머신에서는 사라짐
RUNTIME	| 가상머신에 의해서 잠조 가능

3️⃣ @Documented

  • 어노테이션 정보가 javadocs 문서에 포함된다는 것을 선언

4️⃣ @Inherited

  • 모든 자식 클래스에서 부모 클래스의 어노테이션을 사용 가능함을 선언
profile
배우고 활용하는 것을 즐기는 개발자, 한지연입니다!

0개의 댓글