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

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

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

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

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

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

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

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

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

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

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

Не говорю что она "чистая", это просто пример.
...
Рейтинг: 0 / 0
22.06.2014, 11:36
    #38676493
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
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
22.06.2014, 15:37
    #38676609
DoSOfRedRiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
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
Форумы / Java [игнор отключен] [закрыт для гостей] / Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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