자바 개발을 하다 보면 클래스 또는 메서드 또는 변수 앞에
@Override 같은 @ 표시를 많이 봤을 텐데
이 어노테이션은 JEE5(Java Platform, Enterprise Edition 5)부터
새롭게 추가된 요소
이 어노테이션으로 인해 데이터의 유효성 검사 등을 쉽게 알 수 있고,
이와 관련한 코드가 깔끔해지게 된다
★애노테이션의 사전적 의미는 ‘주석’이다
개발자가 읽기 위한 주석이 아니라
★ JVM, 컴파일러, 프레임워크 등에게 전달하는 일종의 메타데이터
메타데이터란 다른 데이터를 설명해 주는데 데이터,
즉 부가적인 정보를 추가하기 위한 것이다
<JDK 기본 애노테이션_종류 및 설명>
@Override
선언한 메서드가 오버라이드 되었다는 것을 나타낸다.
만약 상위(부모) 클래스(또는 인터페이스)에서 해당 메서드를 찾을 수 없다면
컴파일 에러를 발생시킨다.
@Deprecated
해당 메서드가 더 이상 사용되지 않음을 표시한다.
만약 사용할 경우 컴파일 경고를 발생시킨다.
@SuppressWarnings
선언한 곳의 컴파일 경고를 무시하도록 한다.
@SafeVarargs
Java7 부터 지원하며, 제너릭 같은 가변인자의 매개변수를
사용할 때의 경고를 무시합니다.
@FunctionalInterface
Java8부터 지원하며, 함수형 인터페이스를 지정하는
어노테이션
만약 메서드가 존재하지 않거나, 1개 이상의 메서드(default 메서드 제외)가 존재할 경우
컴파일 오류를 발생 시킨다.
@Retention
자바 컴파일러가 어노테이션을 다루는 방법을 기술하며, 특정 시점까지 영향을 미치는지를 결정
@Retention 종류
RetentionPolicy.SOURCE : 컴파일 전까지만 유효. (컴파일 이후에는 사라짐)
RetentionPolicy.CLASS : 컴파일러가 클래스를 참조할 때까지 유효.
RetentionPolicy.RUNTIME : 컴파일 이후에도 JVM에 의해 계속 참조가 가능. (리플렉션 사용)
@Target
어노테이션이 적용할 위치를 선택
@Target_ 종류
ElementType.PACKAGE : 패키지 선언
ElementType.TYPE : 타입 선언
ElementType.ANNOTATION_TYPE : 어노테이션 타입 선언
ElementType.CONSTRUCTOR : 생성자 선언
ElementType.FIELD : 멤버 변수 선언
ElementType.LOCAL_VARIABLE : 지역 변수 선언
ElementType.METHOD : 메서드 선언
ElementType.PARAMETER : 전달인자 선언
ElementType.TYPE_PARAMETER : 전달인자 타입 선언
ElementType.TYPE_USE : 타입 선언
@Documented
해당 어노테이션을 Javadoc에 포함시킴
@Inherited
어노테이션의 상속을 가능하게 함
@Repeatable
Java8부터 지원하며, 연속적으로 어노테이션을 선언할 수 있게 해줌
어노테이션은 기본적으로 인터페이스 형태를 취하고 있으며,
단지 interface 앞에 @ 표시를 해준다
어노테이션의 필드에서는 enum, String이나 기본 자료형,
기본 자료형의 배열을 사용할 수 있다
ㅣ읽느라 수고 많으셨어요~ㅣ
부족한 글을 읽어주셔서 감사드립니다
아직 부족한 게 많으니
틀린 곳이 있다면
조언의 말씀 꼭 부탁드립니다!!!!
[자바]Stack(스택)FILO,LIFO vs Queue(큐)/ 데이터저장 구조(data) (0) | 2020.07.26 |
---|---|
자바로 구구단 구하기 (중첩 for문) (0) | 2020.07.25 |
[java] 자바 함수종류 / 메소드,파라미터, 리턴값, 멤버변수, 인스턴스생성, 초기화_실습 예제(1) (0) | 2020.07.23 |
자바_ "Hello, World!" 10번 반복 하기(반복문/for문) (0) | 2020.07.21 |
[java] 자바 면접 예상 질문 리스트 모음(1) (0) | 2020.07.17 |