Ответ 1
Посмотрите http://www.javac.info/.
Кажется, вот как это выглядит:
boolean even = { int x => x % 2 == 0 }.invoke(15);
где бит { int x => x % 2 == 0 }
- это замыкание.
Я слышал, что закрытие может быть представлено в следующем стандарте 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
Посмотрите http://www.javac.info/.
Кажется, вот как это выглядит:
boolean even = { int x => x % 2 == 0 }.invoke(15);
где бит { int x => x % 2 == 0 }
- это замыкание.
Это действительно зависит от того, что вводится, и действительно ли оно будет введено вообще. Существует ряд предложений по закрытию разного размера.
См. Alex Miller Java 7 page для предложений и различных сообщений в блогах.
Лично мне бы хотелось увидеть закрытие - они красивые и невероятно полезные - но я боюсь, что некоторые из предложений довольно волосатые.
В ноябре 2009 года произошел неожиданный поворот в этом вопросе, и теперь закрывается на Java 7.
Закрытие (выражения AKA lambdas) в Java 7 не произошло. Наконец, они были добавлены в первый выпуск Java 8 в 2014 году.
К сожалению, вы не найдете закрытия в Java 7. Если вы ищете более легкое решение для закрытия в java, просто проверьте проект lambdaj:
Это функции java 7 http://tech.puredanger.com/java7/#switch примеры очень полезны.
Обратите внимание, что "тип функции" действительно является типом в предложении:
{int => boolean} evaluateInt; //declare variable of "function" type
evaluateInt = {int x => x % 2 }; //assignment
Я думаю, что по-прежнему много дискуссий относительно того, какой синтаксис будет в конечном счете использоваться. Я действительно был бы очень удивлен, если это все-таки превратится в Java 7 из-за всего этого.
закрытие будет раздражающе подробным, если не будет какого-либо типа вывода...: (
У закрытий есть некоторые серьезные краевые случаи. Я бы сказал, что Closures - гораздо более существенное изменение, чем Generics, а у более поздних - множество случаев волосатого края. например Библиотеки коллекций Java не могут быть записаны/скомпилированы без предупреждений.