|
|
|
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
|
|||
|---|---|---|---|
|
#18+
В интерфейсах поля писать можно, они в итоговом классе превращаются в static final. В жаве 8 ввели default-методы в интерфейсах. В результате получается, что default-методы интерфейса не могут вообще работать с полями. Тогда какой в них смысл? Все равно что статические методы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2014, 17:48 |
|
||
|
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
|
|||
|---|---|---|---|
|
#18+
chabapok, На самом деле вопрос странный. 1) Статические метод всё ещё не может иметь тела. 2) Об использовании default methods подробно написано тут http://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html Кучу раз о них упоминали в разных докладах. 3) авторdefault-методы интерфейса не могут вообще работать с полями А как же всякие pure functions? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2014, 21:41 |
|
||
|
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
|
|||
|---|---|---|---|
|
#18+
chabapok, В default методах можно вызывать обычные (абстрактные) методы.. (например getSomeProperty \ setSomeProperty). Нет «default-полей» ибо возможно «ромбовидное наследование».. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2014, 21:54 |
|
||
|
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
|
|||
|---|---|---|---|
|
#18+
DoSOfRedRiverСтатические метод всё ещё не может иметь тела. Чего?! >>всё ещё Статические методы можно писать в интерфейсах только с 8ой джавы. >>не может иметь тела Статический метод не может не иметь тела. DoSOfRedRiverА как же всякие pure functions? Она не чистая всеравно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2014, 22:15 |
|
||
|
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
|
|||
|---|---|---|---|
|
#18+
avp.mk, Ага, накосячил. Не говорю что она "чистая", это просто пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2014, 01:09 |
|
||
|
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
|
|||
|---|---|---|---|
|
#18+
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-методы ради того, чтобы быть на шаг ближе к ромбовидному наследованию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2014, 11:36 |
|
||
|
Зачем интерфейсам default-методы, если в них нельзя обьявлять default-поля?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2014, 15:37 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=170&tid=2127014]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 357ms |

| 0 / 0 |
