Java 接口中的缺省方法返回值
2022-09-02 03:39:14
在处理注释时,我偶然发现了以下代码(它是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";
}
所以我的问题是:默认
关键字注释是特定于的吗?如果是,那么有什么理由反对在正常的接口定义中使用此构造?