Замыкания в Java 7 [дубликат]
Вопрос
На этот вопрос уже есть ответ здесь:
- Закрытие в Java 7 [закрыто] 7 ответов
Я слышал, что замыкания могут быть представлены в следующем стандарте Java, который планируется выпустить где-то следующим летом.
Как будет выглядеть этот синтаксис?
Я где-то читал, что введение замыканий в Java — это большее изменение, чем обобщение в Java 5.Это правда?за и против?
(К настоящему моменту мы точно знаем, что замыкания не будут включены в следующую версию Java)
ИЛИ
редактировать: http://puredanger.com/tech/2009/11/18/closures-after-all/ :D
редактировать2:Переосмысление JDK7: http://blogs.oracle.com/mr/entry/rethinking_jdk7
редактировать3:Нельзя терять ни минуты!: 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 }
бит - это закрытие.
Другие советы
Это действительно зависит от того, что будет представлено, и действительно ли оно вообще будет введено.Есть ряд предложений по закрытию разного размера.
Видеть Страница Java 7 Алекса Миллера за предложения и различные сообщения в блогах.
Лично мне бы хотелось увидеть замыкания - они красиво и невероятно полезно - но я боюсь, что некоторые предложения довольно сомнительны.
В ноябре 2009 года в этом вопросе произошел неожиданный разворот. замыкания теперь будут добавлены на Яву 7.
Обновлять
Замыканий (лямбда-выражений AKA) в 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.
замыкания будут раздражающе многословными, если не будет никакого вывода типа...:(
Замыкания имеют некоторые серьезные крайние случаи.Я бы сказал, что замыкания — гораздо более существенное изменение, чем обобщения, и в последнем все еще есть ряд сложных случаев.напримерБиблиотеки коллекций Java нельзя писать/компилировать без предупреждений.