powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
7 сообщений из 7, страница 1 из 1
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
    #38676253
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В интерфейсах поля писать можно, они в итоговом классе превращаются в static final.

В жаве 8 ввели default-методы в интерфейсах.

В результате получается, что default-методы интерфейса не могут вообще работать с полями. Тогда какой в них смысл? Все равно что статические методы.
...
Рейтинг: 0 / 0
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
    #38676366
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok,

На самом деле вопрос странный.

1) Статические метод всё ещё не может иметь тела.
2) Об использовании default methods подробно написано тут http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html
Кучу раз о них упоминали в разных докладах.
3) авторdefault-методы интерфейса не могут вообще работать с полями
А как же всякие pure functions?
...
Рейтинг: 0 / 0
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
    #38676369
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
chabapok,

В default методах можно вызывать обычные (абстрактные) методы.. (например getSomeProperty \ setSomeProperty).

Нет «default-полей» ибо возможно «ромбовидное наследование»..
...
Рейтинг: 0 / 0
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
    #38676382
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DoSOfRedRiverСтатические метод всё ещё не может иметь тела.
Чего?!

>>всё ещё
Статические методы можно писать в интерфейсах только с 8ой джавы.

>>не может иметь тела
Статический метод не может не иметь тела.

DoSOfRedRiverА как же всякие pure functions?
Она не чистая всеравно.
...
Рейтинг: 0 / 0
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
    #38676435
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mk,

Ага, накосячил.

Не говорю что она "чистая", это просто пример.
...
Рейтинг: 0 / 0
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
    #38676493
chabapok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DoSOfRedRiverchabapok,

На самом деле вопрос странный.

1) Статические метод всё ещё не может иметь тела.
2) Об использовании default methods подробно написано тут http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html


Цитата по вашей ссылке, которая опровергает п1: In addition to default methods, you can define static methods in interfaces. И ниже пример телом статического метода.


DoSOfRedRiverА как же всякие pure functions?

На примере Math.sin: Пишем import static java.lang.Math.*; и в теле функций просто юзаем sin()


avp.mkНет «default-полей» ибо возможно «ромбовидное наследование»..
собственно, вроде бы говорили, что делают default-методы ради того, чтобы быть на шаг ближе к ромбовидному наследованию.
...
Рейтинг: 0 / 0
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
    #38676609
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
chabapok,

http://www.informit.com/articles/article.aspx?p=2191423

Вот здесь всё подробно описано. Вкратце по вашему вопросу:

авторDefault methods have two important use cases:

Evolving existing interfaces. To implement the new Streams API, it was necessary to evolve the Collections Framework's java.util.Collection interface by adding new default Stream<E> stream() and default Stream<E> parallelStream() methods. Without default methods, Collection implementers such as the java.util.ArrayList class would have been forced to implement these new methods or break source/binary compatibility.

Increasing design flexibility. Abstract classes have traditionally been used to share functionality between various concrete subclasses. However, single-class extension has limited this design choice. Default methods offer greater flexibility because you can implement an interface at any point in the class hierarchy and access the interface's default methods from the implementing classes. Also, it's no longer necessary to create adapter classes for multi-method event listener interfaces. Instead, you can add a default method for each listener method to the event listener interface and override these methods as necessary.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]