鉴于:
public @interface MyAnnotation(){
public SomeType[] value();
}
在Java 7中,可以执行以下操作:
@MyAnnotation({
value1,
@MyAnnotation({subValue1, subvalue2, ...}) value2,
...
valueN
})
public Object someProperty;
答案 0 :(得分:-1)
你可以。这是Jackson库中的一个示例(省略了注释):
package com.fasterxml.jackson.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.ANNOTATION_TYPE, ElementType.TYPE, ElementType.FIELD,
ElementType.METHOD, ElementType.PARAMETER})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonSubTypes {
public Type[] value();
public @interface Type {
/**
* Class of the subtype
*/
public Class<?> value();
/**
* Logical type name used as the type identifier for the class
*/
public String name() default "";
}
}
以下是一个示例用法:
@JsonSubTypes({
@JsonSubTypes.Type(value = TestSystemEvent.class, name = "TestEvent"),
})
public interface SystemEvent {
}
答案 1 :(得分:-1)
如何在注释中使用注释?
也许喜欢这个
public @interface MyAnnotation(){
public SomeType[] value();
public MyAnnotation[] refine();
}
@MyAnnotation(
{value1, value2},
refine={ @MyAnnotation({valueX, valueY}), @MyAnnotation(valueM) }
)
public Object someProperty;
此外,在Java 8中,您可以使用Repeatable注释 - 因此您可以优化或添加到您的主要内容中。 (例如第一次)通过后续重复相同注释引入的其他改进。