어노테이션이란?
- @를 사용하여 작성
- 코드에 대한 부가적인 정보를 제공해주는 메타데이터
- 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 |