원본 : http://bioportal.weizmann.ac.il/course/prog2/tutorial/java/javaOO/annotations.html
JDK 5.0 릴리즈에는 어노테이션(annotation)이라 불리는 메타데이터 기능이 도입되었다. 어노테이션은 코드 조각의 작성자 명이나 컴파일러가 특정 오류를 억제하도록 지시하는 것과 같이 프로그램의 일부가 아닌 프로그램에 관한 데이터를 제공해 준다. 어노테이션은 코드가 어떻게 수행되는 것에는 아무런 영향을 주지 않는다.
어노테이션은 @어노테이션의 형태를 사용하고 클래스, 필드, 메소드 등과 같은 프로그램의 선언부에 적용할 수 있다. 어노테이션은 가장 처음으로 그리고 종종(관례상) 그 줄에 나타나며 임의의 인수를 포함할 수 있다:
@Author("MyName")
class myClass() { }
혹은
@SuppressWarnings("unchecked")
void MyMethod() { }
여러분만의 어노테이션을 정의하는 것은 여기에 기술되지 않을 고급기법에 속하지만, 모든 자바 프로그래머들이 알아야 하는 3개의 내장 어노테이션이 있다: @Deprecated, @Override, 그리고 @SuppressWarnings가 그것이다. 다음 예제들은 메소드에 적용된 모든 세 가지 타입의 어노테이션을 보여준다:
import java.util.List;
class Food {}
class Hay extends Food {}
class Animal {
Food getPreferredFood() {
return null;
}
/**
* @deprecated document why the method was deprecated
*/
@Deprecated
static void deprecatedMethod() { }
}
class Horse extends Animal {
Horse() {
return;
}
@Override
Hay getPreferredFood() {
return new Hay();
}
@SuppressWarnings("deprecation")
void useDeprecatedMethod() {
Animal.deprecateMethod(); //deprecation warning - suppressed
}
}
@Deprecated
@Deprecated
@Override
@Override
메소드를 오버라이드 할 때 이 어노테이션을 사용하도록 요구되는 것은 아니기 때문에 특히 메소드가 오버라이드된 메소드의 리턴 타입의 하위 타입을 리턴할 때 명시적으로 그것을 드러내도록 요구하는 것이 유용할 수 있다. 이러한 관례는 “공변 리턴 타입(covariant return type)”이라 불리는데, 이전의 Food 인스턴스를 리턴하는 Animal.getPreferredFood 예제에서 사용되었다.Horse.getPreferredFood (Horse은 Animal의 하위클래스)는 Hay의 인스턴스를 리턴한다. 좀 더 자세한 정보를 위해서는Overriding and Hiding Methods를 참조하라.
@SuppressWarnings
@SuppressWarnings
모든 컴파일러 경고는 한 종류에 속한다. 자바 언어 명세(Java Language Specification)는 “비추천(deprecation)”과 “비확인(unchecked)”의 두 가지 종류를 나열한다. “비확인” 경고는 제네릭이 나오기 전에 작성된 레거시 코드와 인터페이싱할경우에 발생할 수 있다. 하나 이상의 경고 종류를 억제하려면 다음의 문법을 사용하라.
@SuppressWarnings({"unchecked", "deprecation"})
지원되는 경고 종류들의 목록을 보려면 컴파일러 문서를 확인하라.
어노테이션을
[출처] [펌] Annotation에 관한 간략한 소개|작성자 도영주
댓글 없음:
댓글 쓰기