Java/문법

어노테이션(Annotation)

가지코딩 2025. 4. 21. 14:46

어노테이션이란?

  • @를 사용하여 작성
  • 코드에 대한 부가적인 정보를 제공해주는 메타데이터
  • JVM이나 컴파일러, 프레임워크에게 “이 코드는 이런 의미를 갖고 있어요” 라고 알려주는 역할을 한다.
// 컴파일러에게 메서드를 오버라이딩하는 것을 알림
@Override
public String toString() {
    return "Hello!";
}

어노테이션이 사용되는 경우

  • 컴파일러에게 힌트를 주기 위해
  • 런타임 시 리플렉션(reflection)으로 정보 추출
  • 프레임워크(@Autowired, @RequestMapping 등)에서 설정이나 행위 지정

자주 쓰이는 어노테이션

 

@Override

  • 부모 클래스의 메서드를 정확히 재정의했는지 확인한다.
  • 오타나 시그니처 오류 방지
@Override
public String toString() {
    return "Hello!";
}

 

 

@Deprecated

  • 더 이상 사용하지 않는 API임을 나타낸다.
@Deprecated
public void oldMethod() { }

 

 

@SuppressWarnings

  • 컴파일러 경고를 억제하고 싶을 때 사용한다.
  • 자주 쓰는 옵션들 
    • "unchecked" – 확인되지 않은 타입 경고 (제네릭)
    • "deprecation" – 사용 중단된 API 경고
    • "rawtypes" – 원시 타입 사용 경고
@SuppressWarnings("unchecked")
List<String> list = (List<String>) someRawList;

사용자 정의 어노테이션

  • 필요하면 직접 어노테이션을 만들 수도 있다.
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
    String value();
}

어노테이션이 중요한 이유

  • Spring, JUnit, Lombok 같은 프레임워크나 라이브러리에서 어노테이션은 핵심 기능이다.
@RestController
@RequestMapping("/api")
public class UserController {
    
    @GetMapping("/users")
    public List<User> getUsers() {
        return userService.getAll();
    }
}

 

@GetMapping, @RestController -  Spring 에서 자동으로 웹 요청을 매핑해주는 기능을 제공

'Java > 문법' 카테고리의 다른 글

가변 인자 (...)  (0) 2025.04.29
String.split() 문자열 자르기, 나누기  (0) 2025.04.22
Enum 열거형 타입  (0) 2025.04.21
유틸리티 클래스 (Utility Class)  (1) 2025.04.18
switch 표현식 (Switch Expression)  (0) 2025.04.18