问题:
是否可以定位多种元素类型? (不止一个,少于全部)
详细信息:
我尝试创建一个仅在方法和字段上可接受的注释。
我知道如果我没有指定@Target
注释,我可以在所有元素上使用我的自定义注释。但是,我希望在与我的逻辑冲突的元素类型上编译时安全。
在 C#/。NET
中[AttributeUsage(AttributeTargets.Field | AttributeTargets.Method)]
public class MyAttribute : Attribute
{
...
Java尝试
多个目标注释:
@Target(ElementType.METHOD)
@Target(ElementType.FIELD)
public @interface MyAnnotation
{
编译器错误:
MyAnnotation.java:8:错误:重复注释
OR' d值:
@Target(ElementType.METHOD | ElementType.FIELD)
public @interface MyAnnotation
{
编译器错误:
MyAnnotation.java:7:错误:二元运算符的错误操作数类型' |'
注释数组
@Targets({@Target(ElementType.METHOD),@Target(ElementType.FIELD)})
public @interface MyAnnotation
{
编译器错误:
MyAnnotation.java:7:错误:找不到符号 @Targets({@目标(ElementType.METHOD),@目标(ElementType.FIELD)})
^符号:类目标
答案 0 :(得分:3)
Java - 输入是ElementTypes的数组。要在注释中定义数组值,我们用逗号分隔大括号内的值:
@Target({ElementType.METHOD, ElementType.FIELD})
public @interface MyAnnotation {
}