Закрытие в Java 7

Я слышал, что закрытие может быть представлено в следующем стандарте Java, который планируется выпустить где-то около следующего лета.

Как выглядит этот синтаксис?

Я где-то читал, что введение закрытий в java является большим изменением, чем generic было в java 5. Это правда? плюсы и минусы?

(Теперь мы точно знаем, что закрытие не будет включено в следующий выпуск Java)

ИЛИ

изменить: http://puredanger.com/tech/2009/11/18/closures-after-all/: D

edit2: Переосмысление JDK7: http://blogs.oracle.com/mr/entry/rethinking_jdk7

edit3: Theres не пора потерять!: http://blogs.oracle.com/mr/entry/quartet

Ответ 1

Посмотрите http://www.javac.info/.

Кажется, вот как это выглядит:

boolean even = { int x => x % 2 == 0 }.invoke(15);

где бит { int x => x % 2 == 0 } - это замыкание.

Ответ 2

Это действительно зависит от того, что вводится, и действительно ли оно будет введено вообще. Существует ряд предложений по закрытию разного размера.

См. Alex Miller Java 7 page для предложений и различных сообщений в блогах.

Лично мне бы хотелось увидеть закрытие - они красивые и невероятно полезные - но я боюсь, что некоторые из предложений довольно волосатые.

Ответ 3

В ноябре 2009 года произошел неожиданный поворот в этом вопросе, и теперь закрывается на Java 7.

Update

Закрытие (выражения AKA lambdas) в Java 7 не произошло. Наконец, они были добавлены в первый выпуск Java 8 в 2014 году.

Ответ 4

К сожалению, вы не найдете закрытия в Java 7. Если вы ищете более легкое решение для закрытия в java, просто проверьте проект lambdaj:

http://code.google.com/p/lambdaj/

Ответ 6

Обратите внимание, что "тип функции" действительно является типом в предложении:

{int => boolean} evaluateInt;    //declare variable of "function" type
evaluateInt = {int x => x % 2 }; //assignment

Ответ 7

Я думаю, что по-прежнему много дискуссий относительно того, какой синтаксис будет в конечном счете использоваться. Я действительно был бы очень удивлен, если это все-таки превратится в Java 7 из-за всего этого.

Ответ 8

закрытие будет раздражающе подробным, если не будет какого-либо типа вывода...: (

Ответ 9

У закрытий есть некоторые серьезные краевые случаи. Я бы сказал, что Closures - гораздо более существенное изменение, чем Generics, а у более поздних - множество случаев волосатого края. например Библиотеки коллекций Java не могут быть записаны/скомпилированы без предупреждений.