관리 메뉴

제뉴어리의 모든것

[Section1][Java] 심화 - 애너테이션 본문

코드스테이츠/정리 블로깅

[Section1][Java] 심화 - 애너테이션

제뉴어리맨 2022. 7. 24. 19:16

애너테이션이란?

애너테이션의 우리말 번역은 주석이다.

그러나 우리는 기존에 주석을 사용하고 있었다.

//, /** **/ 와 같이 코드를 주석처리 하였다.

그러나 이러한 주석은 코드를 작동하지 않게 막거나,

코드를 설명하기 위해 사용하였다.

그러나 애너테이션은 같은 주석이지만, 전달하려는 대상이 다르다.

기존 주석은 개발자에게 전달하기 위한 정보를 나타내는 주석이였다면,

애너테이션은 프로그램에게 내용을 전달하기 위한 주석이다.

 

 

애너테이션 용도

  • 컴파일러에게 문법 에러를 체크하기 위한 용도
  • 프로그램 빌드할때 코드를 자동으로 생성할 수 있도록 해주기 위한 용도
  • 런타임시에 특정 기능을 실행하도록 정보 제공

 

 

애너테이션 사용 예

  • @Test
@Test // 아래 메서드가 테스트 대상임을 테스트 프로그램에게 알리는 애너테이션
public void run() {...생략...}

public void stop() {...생략...}

@Test 애너테이션은 JUnit이라는 테스트 프로그램에게 해당 코드가 테스트 코드임을 알려서,

JUnit이 작동될때 해당 코드만(run()메소드만) 테스트를 진행한다.

 

  • @FunctionalInterface

@FunctionalInterface  //함수형 인터페이스임을 지정
interface functionInterface1 {
    void print();
}

@FunctionalInterface //함수형 인터페이스임을 지정하였지만, 규칙에 맞지 않으므로 컴파일러가 에러 생성
interface functionInterface2 {
    void print();
    void print2();
}

 

 

애너테이션 종류

  • 표준 애너테이션
    자바에서 기본적으로 제공하는 애너테이션

표준 애너테이션설명

@Override 컴파일러에게 메서드를 오버라이딩하는 것이라고 알림
@Deprecated 앞으로 사용하지 않을 대상을 알릴 때 사용
@FunctionalInterface 함수형 인터페이스라는 것을 알
@SuppressWarning 컴파일러가 경고메세지를 나타내지 않음

 

 

  • 메타 애너테이션
    애너테이션을 위한 애너테이션으로, 애너테이션에 붙이는 애너테이션이다.

메타 애너테이션설명

@Target 애너테이션을 정의할 때 적용 대상을 지정하는데 사용한다.
@Documented 애너테이션 정보를 javadoc으로 작성된 문서에 포함시킨다.
@Inherited 애너테이션이 하위 클래스에 상속되도록 한다.
@Retention 애너테이션이 유지되는 기간을 정하는데 사용한다.
@Repeatable 애너테이션을 반복해서 적용할 수 있게 한다.

 

  • 사용자 정의 애너테이션: 사용자가 직접 정의하는 애너테이션