티스토리 뷰

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 어노테이션은 표시된 메소드가  이상 사용되지 말아야 함을 가리킨다컴파일러는 프로그램이 비추천(deprecated) 메소드나 클래스 혹은 변수를 사용할 때마다 경고를 발생시킨다 요소가 비추천되면 그것은 앞의 예제에 나타나 있는 것처럼 해당되는@deprecated 태그를 사용하여 문서화 되어야 한다태그는 소문자 ‘d’ 시작하며 어노테이션은 대문자 ‘D’ 시작함을 주의하라일반적으로 여러분은 비추천 메소드의 사용을 피해야 하며 그것 대신 무엇을 사용해야 하는지를 확인해야 한다.


@Override

@Override 어노테이션은 요소가 상위 클래스에서 선언된  요소를 오버라이드  것임을 컴파일러에게 알려준다앞의 예제에서는 오버라이드 어노테이션이 Horse 클래스의 getPreferredFood 메소드 Animal 클래스에 있는 동일한 메소드를 오버라이드하고 있음을 가리키는  사용되었다. @Override 표시된  메소드가 상위 클래스에 있는 메소드를 오버라이드하는  실패할 경우 컴파일러는 에러를 발생시킨다.


메소드를 오버라이드    어노테이션을 사용하도록 요구되는 것은 아니기 때문에 특히 메소드가 오버라이드된 메소드의 리턴 타입의 하위 타입을 리턴할  명시적으로 그것을 드러내도록 요구하는 것이 유용할  있다이러한 관례는 공변 리턴 타입(covariant return type)이라 불리는데이전의 Food 인스턴스를 리턴하는 Animal.getPreferredFood 예제에서 사용되었다Horse.getPreferredFood (Horse Animal 하위클래스) Hay 인스턴스를 리턴한다  자세한 정보를 위해서는 Overriding and Hiding Methods 참조하라.


@SuppressWarnings

@SuppressWarnings 어노테이션은 컴파일러가 다르게 발생될 특정 경고를 억제하도록 해준다이전의 예제에서useDeprecatedMethod Animal 비추천 메소드를 호출한다보통 컴파일러는 경고를 발생시킬테지만 경우에는 그것이 억제된다.

모든 컴파일러 경고는  종류에 속한다자바 언어 명세(Java Language Specification) 비추천(deprecation)” 비확인(unchecked)”  가지 종류를 나열한다. “비확인” 경고는 제네릭이 나오기 전에 작성된 레거시 코드와 인터페이싱할 경우에발생할  있다하나 이상의 경고 종류를 억제하려면 다음의 문법을 사용하라.

@SuppressWarnings({"unchecked", "deprecation"})

지원되는 경고 종류들의 목록을 보려면 컴파일러 문서를 확인하라.


어노테이션을

  고급스럽게 사용하는 것에는 자바 프로그램을 읽어 그것의 어노테이션을 처리할  있는 프로그램을 작성하는 것이 포함되어 있다 작업을 돕기 위해, JDK 5.0 릴리즈에는 apt 불리는 어노테이션 처리도구(annotation processing tool) 포함되어 있다다음의JDK 릴리즈(코드네임 머스탱)에는 apt 기능이 자바 컴파일러의 표준 요소가  것이다  자세한 정보를 보려면 Getting Started with the Annotation Processing Tool  참조하라머스탱의 진척사항에 관한  자세한 정보를 원한다면 Language Model API  JSR 269: Pluggable Annotation Processing API  참고하라.
[본문링크] Annotation에 관한 간략한 소개


다른글 http://blog.naver.com/cracker542?Redirect=Log&logNo=40159657935


'java,web study > 2주차 (7월 8일~14일)' 카테고리의 다른 글

객체 복사  (0) 2013.07.09
Call Stack 예제  (0) 2013.07.09
Annotation (어노테이션, 주석(을 달기))  (0) 2013.07.08
Interface  (0) 2013.07.08
Sencha Touch?  (0) 2013.07.08
JVM의 메모리 구조  (0) 2013.07.08
TAG
댓글
댓글쓰기 폼