본문 바로가기
쿤즈 Dev/Java

[Java] 어노테이션(Annotation) 사용 방법

by Koonz:) 2023. 9. 21.
728x90

자바(Java)에서 매우 자주 등장하고 심지어 필요시 만들어서 간편하게 사용하기 위한 방법 중 하나가 바로 어노테이션(Annotation)이다. 발음은 어노테이션 혹은 애노테이션이라 불린다.

이번 포스팅에서는 어노테이션에 대해서 알아보자.


어노테이션 Annotation

자바 어노테이션은 소스 코드에 메타데이터를 추가하는 방법 중 하나다. 주석(Comment)과는 다르게 컴파일러나 런타임 환경에서 특별한 의미를 가지며, 코드에 대한 정보를 제공하거나 프로그램 동작을 제어하는 데 사용된다. 어노테이션은 '@' 기호를 사용하여 표시하며, 클래스, 메서드, 필드 등 다양한 요소에 적용할 수 있다.

 

다음은 자바에서 사용되는 어노테이션의 몇 가지 예시이다.

 

@Override

메서드가 슈퍼 클래스의 메서드를 재정의하고 있음을 나타낸다. 이 어노테이션은 컴파일러에게 해당 메서드가 실제로 슈퍼 클래스의 메서드를 오버라이딩하고 있는지 확인하도록 지시한다.

@Override
public void overrideMethod() {
    // 메서드 내용
}

 

@Deprecated

클래스, 메서드, 필드 등이 더 이상 사용되지 않는 것으로 표시된다. 이 어노테이션을 사용하면 사용자에게 해당 요소를 사용하지 말라고 경고할 수 있다.

@Deprecated
public class DeprecatedClass {
    // 클래스 내용
}

 

@SuppressWarnings

컴파일러에게 경고를 억제하거나 특정 경고 유형을 무시할 때 사용된다. 주로 경고 메세지를 없애기 위해 사용된다.

@SuppressWarnings("unchecked")
public void warningMethod() {
    // 메서드 내용
}

 

@Entity

JPA(Java Persistence API)에서 사용되며, 엔티티 클래스임을 표시한다. 데이터베이스와 매핑되는 객체를 정의할 때 사용된다.

@Entity
public class Student {
	// 엔티티 클래스 내용
}

 

자바 어노테이션은 주로 코드의 가독성을 높이고 문서를 간소화하며 프로그램 동작을 세부적으로 제어하는 데 도움이 된다. 또한, 특정 프레임워크나 라이브러리에서도 어노테이션을 사용하여 기능을 확장하거나 설정을 지정할 수 있다.


어노테이션의 생성

어노테이션은 개발자가 직접 정의해서 사용할 수도 있다. 어노테이션을 만드는 방법은 다음과 같다.

 

  1. '@interface' 키워드를 사용하여 어노테이션을 선언한다.
  2. 필요한 매개변수를 선언한다. 이렇나 매개변수는 어노테이션의 속성이 되며, 속성의 이름과 타입을 지정한다.
  3. 필요한 기본값(default)을 속성에 설정할 수 있다.
  4. 어노테이션을 사용할 때는 '@' 기호를 이용하여 어노테이션의 이름을 사용하고, 필요한 속성값을 설정한다.
import java.lang.annotation.*;

// 어노테이션 선언
@Retention(RetentionPolicy.RUNTIME) // 어노테이션의 유지 정책 설정 (런타임까지 유지)
@Target(ElementType.METHOD) // 어노테이션을 메서드에 적용할 수 있도록 설정
public @interface CustomAnnotation {
    String value() default "Default Value"; // 문자열 형태의 속성 정의 (기본값 설정 가능)
    int count(); // 정수형 속성 정의
    boolean enabled() default true; // 불리언 형태의 속성 정의
}

위 코드에서 'CustomAnnotation'은 사용자 정의 어노테이션이다. '@Retention'과 '@Target'을 사용하여 어노테이션의 유지 정책과 적용 대상을 설정했다. 또한, 'value', 'count', 'enabled'와 같은 속성을 정의하였다.

 

public class Student {
    @CustomAnnotation(count = 42, enabled = false)
    public void method() {
        // 메서드 내용
    }
}

 

위 코드에서 'Student' 클래스의 메서드에 '@CustomAnnotation' 어노테이션을 적용했다. 이때 속성값을 설정하고, 설정하지 않은 속성값은 기본값을 사용한다.

 

만약 이 어노테이션을 런타임에서 사용하려면, 리플렉션(reflection)을 통해 어노테이션 정보를 읽을 수 있다.

 

댓글