По умолчанию {} в @interface весной

Просто прочитайте некоторый исходный код из 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?

2 ответа

Решение

На яве @interface какое-то зарезервированное слово (ключевое слово) для определения annotations, Таким образом, вы можете быть уверены, что класс, который вы перечислили выше, является определением аннотации. В этом классе default Ключевое слово может быть использовано для определения значения по умолчанию для свойств аннотации. Эта функция была введена одновременно с аннотациями на языке.

  1. default ключевое слово используется в аннотациях для установки значения по умолчанию для соответствующего типа аннотации (оно, в свою очередь, позволяет не указывать значение этого типа каждый раз, когда вы пишете аннотацию);

  2. {} это просто литерал массива, который означает пустой массив.

Другие вопросы по тегам