Разработка: Заметки о Java 8. Интерфейсы

Следующие примечания посвящены использованию ключевых слов defaultи staticв интерфейсах Java 8.

Пример кода 1. Наличие неоднозначных полей или методов само по себе не вызывает никаких проблем, но неоднозначное обращение к таким полям/методам приведет к ошибке времени компиляции.

Поэтому вы не можете вызвать :, System.out.println(VALUE);потому что это будет неоднозначно (есть два определения VALUE). Но следующие строки действительны:

C tc = new C();
System.out.println(( ( I1) tc).VALUE);

I1 tc = new C();
System.out.println(tc.VALUE);

Пример кода 2. defaultКлючевое слово.

Обратите внимание, что getId()это метод по умолчанию в интерфейсе Interface1.

Поскольку интерфейс Interface2 переобъявляет метод getId как абстрактный, класс D должен либо предоставить реализацию этого метода, либо быть помечен как абстрактный. В этом случае создание абстрактного класса не поможет из-за утверждения: Interface1 acct = new D(); Если вы сделаете класс D абстрактным, вы получите следующую ошибку компилятора: Cannot instantiate the type D.

Если бы класс D реализовал Интерфейс1 вместо Интерфейса2, то не обязательно обеспечивать реализацию метода getId по умолчанию. Эта функция поможет нам расширить интерфейсы дополнительными методами. Все, что нам нужно, это предоставить реализацию по умолчанию в интерфейсе, используя ключевое слово defaultтак же, как оно используется в интерфейсе Interface1.

Пример кода 3. Java не позволяет расширять несколько классов, поскольку это приведет к «ромбовидной проблеме», когда компилятор не сможет решить, какой метод суперкласса использовать. При использовании методов по умолчанию проблема ромба возникнет и для интерфейсов.

Показанный выше класс D реализует Interface1 и Interface2. Компилятор не может решить, какой метод getId выбрать. Обязательным является обеспечение реализации общих методов интерфейсов по умолчанию. Таким образом, если класс реализует оба вышеуказанных интерфейса, он должен будет предоставить реализацию getId()метода, иначе компилятор выдаст ошибку времени компиляции.

Важные моменты о методах интерфейса Java 8 по умолчанию:

  • Методы интерфейса Java по умолчанию помогут нам расширять интерфейсы, не опасаясь нарушения классов реализации.
  • Методы интерфейса Java по умолчанию устраняют различия между интерфейсами и абстрактными классами.
  • Методы интерфейса Java 8 по умолчанию помогут нам избежать служебных классов, например, все методы класса Collections могут быть предоставлены в самих интерфейсах.
  • Методы интерфейса Java по умолчанию помогут нам удалить базовые классы реализации. Мы можем предоставить реализацию по умолчанию, а классы реализации могут выбрать, какой из них переопределить.
  • Одной из основных причин введения методов по умолчанию в интерфейсах является улучшение API коллекций в Java 8 для поддержки лямбда-выражений.

Обратите внимание, что getOtherId()в классе E — это простой метод класса, он не переопределяет метод интерфейса.

Когда мы запустим приложение, мы получим следующий вывод:

Object 1
E: get Id
E: get Other Id
Object 2
E: get Id
Calling the static method in Interf1
Interface 1: get Other Id

Важные моменты о статическом методе интерфейса Java 8:

  • Статический метод интерфейса Java является частью интерфейса, мы не можем использовать его для объектов класса реализации.
  • Статические методы интерфейса Java хороши для предоставления служебных методов, например проверки на нулевое значение, сортировки коллекций и т. д.
  • Статический метод интерфейса Java помогает нам обеспечить безопасность, не позволяя классам реализации переопределять их.
  • Мы можем использовать статические методы интерфейса Java, чтобы удалить служебные классы, такие как коллекции, и переместить все их статические методы в соответствующий интерфейс, который будет легко найти и использовать.

Для получения дополнительной информации ознакомьтесь с официальной документацией Oracle .

Suggested posts

Поиск информации о доменных именах

Отрывок из книги «Маленькие программные инструменты Sharp» Брайана П. Хогана.

Поиск информации о доменных именах

Когда вы делаете запрос на facebook.com, ваш компьютер ищет доменное имя, чтобы преобразовать это доменное имя в IP-адрес, чтобы ваш компьютер мог установить это соединение.

Настройка и использование Apache Kafka с Spring Boot

Кафка с весенним сапогом

Настройка и использование Apache Kafka с Spring Boot

Введение Apache Kafka — это платформа распределенной потоковой передачи с открытым исходным кодом, которая обеспечивает крупномасштабную, высокопроизводительную и отказоустойчивую потоковую передачу данных в режиме реального времени. Система основана на модели публикации-подписки, в которой производители публикуют сообщения в темах, а потребители подписываются на эти темы для использования сообщений.

Related posts

Что вы можете сделать в свой сезон ожидания (в ожидании вашей первой работы в сфере технологий)

Что вы можете сделать в свой сезон ожидания (в ожидании вашей первой работы в сфере технологий)

Переход к новой карьере может быть чрезвычайно сложным, если вы пытаетесь сделать это в одиночку. Важно найти партнеров по подотчетности, которые находятся на том же уровне обучения, что и вы, у которых схожие цели, упорство и стремление.

Отслеживайте кого угодно только по номеру телефона | OSINT-расследование

Отслеживайте кого угодно только по номеру телефона | OSINT-расследование

Вы можете быть исследователем OSINT, игроком CTF или просто тем, кто получает спам-звонки. Кто-то, кто пытается проверить номер, который вы видели в рекламе.

БЕЗГРАНИЧНАЯ ЖИЗНЬ

Когда вы вырастаете, вам, как правило, говорят, что мир такой, какой он есть, и ваша жизнь состоит в том, чтобы просто жить своей жизнью внутри мира, никогда не рискуя своей жизнью, просто следовать установленному пути и умереть в конце, и стараться не слишком сильно бить стены. Но это очень ограниченная жизнь.

Журнал

Журнал

Открытый дневник: картинка в день. Меня всегда завораживали истории.