Java의 정석 - 애너테이션

원태연·2022년 5월 30일
0

Java의 정석

목록 보기
14/19
post-thumbnail

애너테이션

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

프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것.

표준 애너테이션

  • @Override : 컴파일러에게 오버라이딩 메서드라는 것을 알림

    오버라이딩을 올바르게 했는지 체크 할 수 있음

  • @Deprecated : 앞으로 사용하지 않을 것을 권장하는 필드나 메서드임을 알림

  • @SuppressWarnings : 컴파일러의 경고메세지가 안 나타나게 함

  • @SafeVarargs

  • @FunctionalInterface : 함수형 인터페이스를 컴파일러가 체크함

  • @Native

메타 애너테이션

애너테이션을 정의할 때 사용되는 애너테이션

  • @Target: 애너테이션의 적용 대상을 지정할 때 사용

  • @Retention : 애너테이션이 유지되는 기간을 지정하는데 사용

    @Target({TYPE, FIELD, METHOD, PARAMETER, ...})
    @Rententaion(RetentionPolicy.SOURCE) //유지정책 = 소스 파일에서만
    public @interface SuppressWarnings{
    //  ...
    }

    @Rententaion(RetentionPolicy.RUNTIME) : 클래스 파일에 존재, 실행시 사용가능

  • @Documented

  • @Inherited : 애너테이션을 자손 클래스에 상속할 때 사용

애너테이션 만들기

@interface AnnotationName{
//  ... elements
}
@interface TestInfo{
  int count();
  String testedBy();
}

@TestInfo(
  count = 3,
  testedBy = "Royce"
)
public class NewClass{...}
element 사용
  • 기본값을 지정하지 않으면, 적용할 때 값을 지정해야한다.
@interface TestInfo{
  int count() default 1;
  String testedBy();
}
@TestInfo(
  testedBy = "Royce"
)
// count 1
// testedBy  Royce
  • 요소가 하나이고 이름이 value이면 요소 이름 생략가능

    @interface TestInfo{
    	int value();
    }
    @TestInfo(10)
    // count 10
  • 요소는 기본형, String, enum, 애너테이션, Class만 가능

  • 예외선언 불가

  • 매개변수 선언 불가

  • 타입 매개변수(< T >) 사용 불가

profile
앞으로 넘어지기

0개의 댓글