Ключевое слово по умолчанию здесь не относится к аннотациям.
Это особенность Java для обеспечения реализации по умолчанию для методов интерфейса.
Необходимость такого поведения:
Предположим, изначально был определен интерфейс Vehicle для поддержки всех функциональных методов транспортного средства -
interface Vehicle {
void speed();
...
//other interface methods
}
Теперь классы, реализующие этот интерфейс Vehicle, реализовали эти абстрактные методы.
Теперь в будущем Автомобиль может летать. Так что вам нужно добавить функцию полета.
Теперь, если вы добавляете метод flyingSpeed () в интерфейс Vehicle, вам нужно изменить все существующие классы, чтобы избежать нарушения кода.
Не осуществимое решение.
Для обратной совместимости в Java предусмотрена функция метода Default. Чтобы вы могли добавить новые методы для взаимодействия с реализацией по умолчанию, чтобы существующие классы не нуждались в реализации этого метода. И новые классы Vehicle могут переопределять эти методы в соответствии с их потребностями.
interface Vehicle {
void speed();
...
//other interface methods
//default method
default void flyingSpeed() {
System.out.println("Default flying speed");
}
}
При использовании этого способа предыдущие существующие классы Vehicle не должны будут реализовывать этот метод.
Для получения дополнительной информации см. здесь.