산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> java

Java 애너테이션 완전 해설: 종류, 배치 위치, 실전 예제

Java 애너테이션 완전 해설

Java 애너테이션이 무엇인지, 어떻게 분류되는지, 명확한 실전 예제로 효과적으로 적용하는 법을 알아봅니다.

애너테이션은 소스 코드에 임베디드된 메타데이터로 컴파일러에 추가 정보 전달, 필요 시 런타임 시스템에도 전달. 실행 바이트코드 일부는 아니지만 컴파일, 코드 생성, 리플렉션에 영향 줄 수 있습니다.

애너테이션은 항상 @ 심볼로 시작. 가장 일반적인 문법:

@AnnotationName

@Override 애너테이션 실전

@Override 애너테이션은 메서드가 슈퍼클래스 메서드 오버라이딩 의도임을 알림. 필수 아님지만 사용 시 컴파일러가 잘못된 시그니처 등 불일치 플래그 가능.

예제 1: @Override 애너테이션

class Animal { public void displayInfo() { System.out.println("I am an animal."); } } class Dog extends Animal { @Override public void displayInfo() { System.out.println("I am a dog."); } } class Main { public static void main(String[] args) { Dog d1 = new Dog(); d1.displayInfo(); } } 

출력

I am a dog. 

이 예제에서 displayInfo()가 Animal과 Dog 둘 다 존재. Dog의 오버라이딩된 메서드 실행, 다형성 시연.


애너테이션 형식

애너테이션은 멤버(속성) 포함 가능. 세 주요 범주로 그룹화:

1. 마커 애너테이션 (Marker Annotations)

요소 없음, 플래그 용도로만 사용. 괄호 선택적.

@AnnotationName

2. 단일 요소 애너테이션 (Single-Element Annotations)

한 요소 포함, 관례상 value 이름. 단일 요소만 있을 때 이름 생략 가능.

@AnnotationName("elementValue")

3. 다중 요소 애너테이션 (Multi-Element Annotations)

여러 요소 포함, 콤마로 구분.

@AnnotationName(element1 = "value1", element2 = "value2")

애너테이션 배치 위치

애너테이션은 모든 선언 앞: 클래스, 메서드, 필드, 인터페이스 등. Java 8부터 타입에도 애너테이션 가능.

1. 선언 위

일반적 배치: 대상 선언 바로 위.

예제 2: @SuppressWarnings 애너테이션

import java.util.*; class Main { @SuppressWarnings("unchecked") static void wordsList() { ArrayList wordList = new ArrayList<>(); // 이 코드 unchecked 경고 유발 wordList.add("programiz"); System.out.println("Word list => " + wordList); } public static void main(String args[]) { wordsList(); } } 

출력

Word list => [programiz] 

@SuppressWarnings("unchecked") 없으면 컴파일러가 unchecked 연산 경고 방출. 예제는 제네릭으로 이 경고 완화법도 시연:

ArrayList<String> wordList = new ArrayList<>();

2. 타입 애너테이션 (Java 8+)

타입 애너테이션으로 타입 발생 위치 어디든 애너테이션 가능, 정적 분석과 널-안전성 강화.

// 생성자 호출 new @Readonly ArrayList<>(); // 타입 정의 @NonNull String str; @NonNull List<String> newList; List<@NonNull String> newList; // 타입 캐스트 newStr = (@NonNull String) str; // Extends/implements class Warning extends @Localized Message // Throws 절 public String readMethod() throws @Localized IOException 

이 애너테이션들은 도구가 더 강한 타입 검사 강제, NullPointerException 같은 런타임 에러 방지 가능하게 합니다.


애너테이션 종류

  1. 사전 정의 애너테이션 (Predefined Annotations)
    • @Deprecated
    • @Override
    • @SuppressWarnings
    • @SafeVarargs
    • @FunctionalInterface
  2. 메타 애너테이션 (Meta-Annotations)
    • @Retention
    • @Documented
    • @Target
    • @Inherited
    • @Repeatable
  3. 커스텀 애너테이션 (Custom Annotations)

    프로젝트 특화 도메인 애너테이션 정의. Java 애너테이션 타입 튜토리얼 참조.


애너테이션 실전 용도

java

  1. Java 연산자 마스터하기: 종류, 문법, 실전 예제
  2. Java 주석: 종류, 사용법, 모범 사례
  3. Java if…else 문 완전 정복: 제어 흐름 완벽 이해
  4. Java 향상된 for 루프(for-each) 완벽 가이드: 문법, 예제, 비교
  5. Java String 마스터하기: 생성, 메서드, 모범 사례
  6. Java 인터페이스 마스터: 개념, 구현, 모범 사례
  7. Java 익명 내부 클래스 마스터: 정의, 문법, 실전 예제
  8. Java Try-with-Resources 마스터: 자동 리소스 관리 완전 해설
  9. Java Assertion(어설션) 실전 가이드: 버그 조기 발견과 코드 신뢰성 확보
  10. Java Vector 완벽 가이드: 사용법, 특징, ArrayList와의 비교