면접준비

자바 어노테이션(Annotation)이란?

소금_msg 2022. 12. 10. 15:00

어노테이션이란?

JDK5 이상 버전에서부터 등장한 것으로 클래스나 메소드 또는 변수에 @를 사용하는 것을 말한다.

어노테이션의 기능

어노테이션은 주석처럼 달아서 특수한 의미 부여를 할 수 있다. 기능주입이 가능하다.

사용이유

프로그램에게 추가 정보를 제공하는 메타 데이터이기 때문이다.

 

 

예시

1. 자식 클래스에 여러 개의 메소드가 정의되어 있을 때 사용

해당 메소드가 부모클래스에 있는 메소드를 오버라이딩 했다는 것을 명시적으로 선언한다.

 

어노테이션을 사용하지 않으면 자식 클래스에 여러 개의 메소드가 있을 경우, 어떤 메소드가 오버라이딩 되었는지 쉽게 파악하기 어렵다.

이때 오버라이드 어노테이션으로 명시적으로 선언하면 명시적으로 어떤 메소드가 오버라이딩 되었는지를 쉽게 파악할 수 있다.

2. 컴파일러에게 문법 체크를 하도록 알려주는 기능

오버라이딩을 하기 위해서는 부모 클래스에 있는 메소드명과 매개변수를 동일하게 가져가야 한다.

만약 매개변수를 잘못 지정했을 경우 에러표시를 띄운다.

따라서 어노테이션을 사용하면 이 메소드는 Override된거라고 컴파일러에게 알려서 컴파일 하기 전에 이러한 사항을 컴파일러가 체크할 수 있게 한다. 

 

@문자와 어노테이션 이름으로 구성이 되며, 컴파일러에서는 @ 문자로 시작이 되면 어노테이션으로 판단을 합니다.

어노테이션은 값을 저장할 수 있는 엘레멘트를 가지며, 오노테이션 이름 다음에 괄호 안에 엘레멘트를 정의합니다.

@Column(name="userId", length = 50, nullable = false, unique = false)

위의 어노테이션은 Column이라는 이름의 어노테이션이고 nmae이라는 이름의 엘레먼트를 가지며 name의 엘레먼트 값은 userId다.

어노테이션은 클래스, 인터페이스, 메소드, 메소드 파라미터, 필드, 지역 변수 위에 위치할 수 있다.

 

Built-in Java Annotations

Java의 내장형 어노테이션

 

@Deprecated

클래스, 메소드, 필드 등에 붙일 수 있고 

deprecated code를 사용하면 컴파일러에서는 warning을 표시합니다.

컴파일러에게 이 메소드는 없어질 거라는걸 알려주고 쓰지 말라고 경고하는 것이다.

@Deprecated는 Javadoc으로 이 메소드는 어떤 이유로 사라지며 대신 어떻게 사용하라는 내용을 담아줄 수 있다.

@Deprecated
/**
  @Deprecated Use MyNewComponent instead.
*/

public class MyComponent {

}

 

@Override

부모 클래스의 메소드를 오버라이드 할 때 사용한다.

오버라이드 할 때, 필수로 어노테이션을 사용해야 하는 것은 아니지만, 오버라이드 하고 있다는 것을 알려주기에 사용합니다.

 

 

Meta-Annotiation

다른 어노테이션에 적용을 할 수 있는 어노테이션을 메타 어노테이션이라고 한다.

 

@Inherited

자식 클래스에 부모 클래스의 어노테이션을 가지도록 하기 위해 사용하는 어노테이션이다.

 

@Documented

Javadocs에 어노테이션의 사용을 문서화해주게 하는 어노테이션이다.

 

 


참고블로그

 

https://data-study-clip.tistory.com/m/130

 

Java - 어노테이션(Annotation)이란 무엇인가?

어노테이션은 JDK5 이상 버전에서부터 등장한 것으로 클래스나 매소드 또는 변수에 @를 사용하는 것을 말한다. Why we use Annotation? 어노테이션은 사전적 의미로 주석을 의미한다. 주석과는 역할이

data-study-clip.tistory.com

https://blog.leocat.kr/notes/2017/04/08/java-deprecated-and-deprecated

 

[Java] @Deprecated and @deprecated

@Deprecated는 annotation으로 타입, 필드, 메소드 등에 붙일 수 있고, @Deprecated 표시 되어 있는 메소드나 필드를 사용하면 빌드할 때 워닝 메시지를 보여준다. 컴파일러에게 이 메소드는 없어질거라는

blog.leocat.kr

https://goateedev.tistory.com/319

 

Java annotation(1) - 어노테이션이란?

목차 Annotation? 자바 어노테이션은 자바 코드에 메타 데이터를 제공하기 위해 사용됩니다. @ 문자와 어노테이션 이름으로 구성이 되며, 컴파일러에서는 @ 문자로 시작이 되면 어노테이션으로 판

goateedev.tistory.com