@Target({}) 用于 java.lang.annotation.Target 的任何示例用法?

sim*_*ico 2 java annotations

http://download.oracle.com/javase/6/docs/api/java/lang/annotation/Target.html

此元注释表明声明的类型仅用作复杂注释类型声明中的成员类型。它不能用于直接注释任何东西:

@Target({}) 
public @interface MemberType {
    ...
}
Run Code Online (Sandbox Code Playgroud)

这是什么意思?任何使用这个的示例代码?

注意:我指的是 @Target 的空 args 使用,如 JavaDoc 中所述,而不是 Target 与 enum 常量的详细记录使用。

Don*_*ows 5

当注解只能在其他注解中使用(具有非空目标集)并且不能直接附加到任何东西时,使用空目标。在 JAXB 中使用这个的一个例子,其中@XmlNs注解有一个空的目标列表;下面的代码是从我自己的代码中提取的(有一些非常小的改动),是package-info.java这个特定包的完整文件:

@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;
Run Code Online (Sandbox Code Playgroud)

@XmlNs注释用于指示JAXB什么前缀用于XLink命名空间,但这些信息只能永远被放置在架构级别(从一般的XML的限制,但对大部分的问题),也因为可能有很多这样的映射,它不能直接附加到包,而是必须进入主@XmlSchema注释的数组值属性。