【发布时间】:2011-04-18 18:43:57
【问题描述】:
在使用注释时,我偶然发现了以下代码(它是 Hibernate @NotNull 注释):
@Target(value = {ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
@Constraint(validatedBy = {})
public @interface NotNull {
@Target(value = {ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER})
@Retention(value = RetentionPolicy.RUNTIME)
@Documented
public @interface List {
public NotNull[] value();
}
public String message() default "{javax.validation.constraints.NotNull.message}";
public Class<?>[] groups() default {};
public Class<? extends Payload>[] payload() default {};
}
我想知道方法定义中的default 关键字/构造,这是我以前从未见过的。据我了解,它允许您为此方法(或注释属性)定义一个默认值。
现在我试图将此构造应用于普通接口,但失败了。这将无法编译:
public interface DefaultTest {
public String test() default "value";
}
但这会起作用:
public @interface DefaultTest {
public String test() default "value";
}
所以我的问题是:default 关键字注解是特定的吗?如果是,那么在普通接口定义中使用这种结构有何不妥?
【问题讨论】:
标签: java interface annotations language-features