Следующие примечания посвящены использованию ключевых слов 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 по умолчанию:
Обратите внимание, что 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:
Для получения дополнительной информации ознакомьтесь с официальной документацией Oracle .
Когда вы делаете запрос на facebook.com, ваш компьютер ищет доменное имя, чтобы преобразовать это доменное имя в IP-адрес, чтобы ваш компьютер мог установить это соединение.
Введение Apache Kafka — это платформа распределенной потоковой передачи с открытым исходным кодом, которая обеспечивает крупномасштабную, высокопроизводительную и отказоустойчивую потоковую передачу данных в режиме реального времени. Система основана на модели публикации-подписки, в которой производители публикуют сообщения в темах, а потребители подписываются на эти темы для использования сообщений.
Переход к новой карьере может быть чрезвычайно сложным, если вы пытаетесь сделать это в одиночку. Важно найти партнеров по подотчетности, которые находятся на том же уровне обучения, что и вы, у которых схожие цели, упорство и стремление.
Вы можете быть исследователем OSINT, игроком CTF или просто тем, кто получает спам-звонки. Кто-то, кто пытается проверить номер, который вы видели в рекламе.
Когда вы вырастаете, вам, как правило, говорят, что мир такой, какой он есть, и ваша жизнь состоит в том, чтобы просто жить своей жизнью внутри мира, никогда не рискуя своей жизнью, просто следовать установленному пути и умереть в конце, и стараться не слишком сильно бить стены. Но это очень ограниченная жизнь.