2017-01-11 5 views
1

Просто прочитайте некоторые исходный код из Спринг-веб-4.2.4, обнаружил, что ControllerAdvice (аннотацию) довольно интересен:по умолчанию {} в @interface весной

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

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

    //...... 
} 

Я не считаю default {} в качестве новая функция Java 8?

+0

«default» - это новая функция Java 8, но только для «интерфейса», а не для «@interface». –

+0

Возможный дубликат [Интерфейс с методами по умолчанию vs Абстрактный класс в Java 8] (http://stackoverflow.com/questions/19998454/interface-with-default-methods-vs-abstract-class-in-java-8) – Andremoniy

+0

Позже выяснилось, что это просто поведение Java-аннотации, http://stackoverflow.com/questions/588056/interface-default-declaration-usage-in-java объяснено раньше. Спасибо всем. –

ответ

1

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

+0

Вы абсолютно правы. http://stackoverflow.com/questions/588056/interface-default-declaration-usage-in-java Объясняет это немного. Спасибо приятель. –

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

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

Смежные вопросы