Spring 中 @interface 中的默认 {}

default {} in @interface in Spring

刚看了Spring-web-4.2.4的一些源码,发现ControllerAdvice(注解)很有意思:

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Component
public @interface ControllerAdvice {
  @AliasFor("basePackages")
  String[] value() default {};

  @AliasFor("value")
  String[] basePackages() default {};

  //......
}

我不认为 default {} 是 Java 8 的新功能?

在Java中@interface是一种定义annotations的保留字(关键字)。所以你可以确定你上面列出的 class 是一个注解定义。在此 classes default 关键字中可用于定义注释属性的默认值。此功能是在语言中引入注释的同时引入的。

  1. 注释中使用default关键字为相应的注释类型设置默认值(反过来,它允许您不必在每次编写注释时都指定此类型的值);

  2. {} 只是一个数组文字,意思是 一个空数组