Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> java

Java 8 Default Methods: улучшение интерфейсов и обратная совместимость

Java 8 ввела default методы в интерфейсах — методы с реализацией по умолчанию. Это сделано для обратной совместимости: можно добавить методы в интерфейсы (например, forEach в Collection) без нарушения существующих реализаций.

Синтаксис

public interface Vehicle {
    default void print() {
        System.out.println("I am a vehicle!");
    }
}

Конфликт множественных default-методов

Если класс реализует два интерфейса с одинаковым default-методом, возникает неоднозначность. Два способа решения:

1. Переопределение в классе

public class Car implements Vehicle, FourWheeler {
    public void print() {
        System.out.println("I am a four wheeler car vehicle!");
    }
}

2. Явный вызов через super

public class Car implements Vehicle, FourWheeler {
    public void print() {
        Vehicle.super.print();
    }
}

Static default методы

Интерфейсы могут иметь static вспомогательные методы:

public interface Vehicle {
    default void print() { System.out.println("I am a vehicle!"); }
    static void blowHorn() { System.out.println("Blowing horn!!!"); }
}

Полный пример

public class Java8Tester {
    public static void main(String[] args) {
        Vehicle vehicle = new Car();
        vehicle.print();
    }
}
interface Vehicle {
    default void print() { System.out.println("I am a vehicle!"); }
    static void blowHorn() { System.out.println("Blowing horn!!!"); }
}
interface FourWheeler {
    default void print() { System.out.println("I am a four wheeler!"); }
}
class Car implements Vehicle, FourWheeler {
    public void print() {
        Vehicle.super.print();
        FourWheeler.super.print();
        Vehicle.blowHorn();
        System.out.println("I am a car!");
    }
}

Вывод

I am a vehicle!
I am a four wheeler!
Blowing horn!!!
I am a car!

Default методы позволяют эволюционировать API без ломания существующего кода.

java

  1. Освоение операторов Java: типы, синтаксис и практические примеры
  2. Комментарии в Java: типы, использование и лучшие практики
  3. Освоение улучшенного цикла for в Java: синтаксис, примеры и лучшие практики
  4. Освоение строк в Java: создание, методы и лучшие практики
  5. Абстрактные классы и методы в Java: полное руководство
  6. Интерфейсы в Java: концепции, реализация и лучшие практики
  7. Анонимные внутренние классы в Java: определение, синтаксис и практические примеры
  8. Try-with-resources в Java: автоматическое управление ресурсами
  9. Аннотации в Java: типы, размещение и практические примеры
  10. Assertions в Java: практическое руководство по обнаружению багов и обеспечению надежности кода