2010-12-10 4 views
1

http://download.oracle.com/javase/6/docs/api/java/lang/annotation/Target.htmljava.lang.annotation.Target에 @Target ({})을 사용하는 예가 무엇입니까?

이 메타 - 어노테이션은 선언 된 타입이 복합 어노테이션 유형 선언에서 멤버 유형으로 사용하기위한 것임을 나타냅니다. 직접 주석을다는 데 사용할 수 없습니다.

@Target({}) 
public @interface MemberType { 
    ... 
} 

이게 무슨 의미입니까? 이것을 사용하는 모든 예제 코드?

NB : JavaDoc에 설명 된대로 @Target의 빈 args 사용을 언급하고 있으며 enum 상수와 함께 Target을 잘 사용하지는 않습니다.

+0

깨진 링크 .... – skaffman

+0

나는 링크를 수정했습니다. – GaryF

답변

4

빈 대상은 주석이 다른 주석 (비어 있지 않은 대상 집합과 함께) 내에서만 사용될 수 있고 직접 연결할 수없는 경우에 사용됩니다. 이것을 사용하는 예는 JAXB에서이며, @XmlNs 주석에는 빈 대상 목록이 있습니다. @XmlNs 주석이되는 XLink 네임 스페이스에 사용할 것을 접두사 JAXB를 지시하는 데 사용됩니다

@XmlSchema(namespace = Namespaces.MAIN, 
    xmlns = { @XmlNs(prefix = "xlink", namespaceURI = Namespaces.XLINK) }, 
    elementFormDefault = QUALIFIED, attributeFormDefault = QUALIFIED) 
package example.bindings; 

import static javax.xml.bind.annotation.XmlNsForm.QUALIFIED; 

import javax.xml.bind.annotation.XmlNs; 
import javax.xml.bind.annotation.XmlSchema; 
import example.common.Namespaces; 

: (아주 사소한 변화에) 내 자신의 코드에서 추출이 특정 패키지의 전체 package-info.java 파일입니다 아래의 코드 , 그 정보는 오직 스키마 레벨 (일반적인 XML로부터의 제한이지만 대부분은 문제가 아님)에 배치 될 수 있으며 많은 매핑이있을 수 있기 때문에 패키지에 직접 첨부 될 수는 없으며 대신 주 @XmlSchema 주해의 배열 값 속성에 들어가야합니다.

+0

또한 @XmlNs 및 @XmlSchema의 정의 코드를 제공하십시오. – simpatico

+0

@simpatico : 주석이 달렸으므로 리버스 엔지니어링은 쉽지 않습니다. 패키지 선언과 임포트를 생략하면'@XmlNs'는 다음과 같이됩니다 :'@Retention (RUNTIME) @Target ({}) public @interface XmlNs {String prefix(); String namespaceURI(); }'와'@XmlSchema'는 유사합니다 (더 길다면 2가 아닌 5 개의 속성을가집니다). 포함 된 주석에 대한 참조는 다른 주석을 클래스 이름으로 사용함으로써 수행됩니다 (따라서'@ XmlSchema'에서'xmlns' 필드는'XmlNs []'유형입니다). –

+0

주석은 순전히 선언적입니다. 처리를 포함 할 수 없습니다. 처리 방법을 알고 싶다면 별도의 질문을하십시오. :-) –

3

@Target 주석은 주석을 선언하는 특수한 주석입니다. 자체 정의 선언 (@Target은 선언이 @Target(ElementType.ANNOTATION_TYPE) 임)이있는 Java "buildin"입니다. 따라서 주석이나 클래스에서 사용할 수 없습니다. "일반"주석은이를 사용할 수있는 위치를 정의하는 데 필요합니다. 필요한 빈 속성의 콩 세터에 사용되는 간단한 봄 주석 @Required 다음

:

@Target(ElementType.METHOD) 
public @interface Required { 

} 

@Required 만이 아닌 필드, 클래스 나 다른 요소의 메소드에 사용할 수있는 주석.

+1

@Target ({})의 사용법에 어떻게 답합니까? –

관련 문제