Кто-нибудь может описать в двух словах различия между 3 замыканиями и их текущим состоянием в Java? - PullRequest
11 голосов
/ 22 января 2010

Я читаю о замыканиях, которые появятся в Java 7.

И я немного сбит с толку, потому что с одной стороны есть много хороших статей, которые описывают новые закрытия Java. Но с другой стороны, было 3 разных спецификации, и некоторые статьи просто устарели, потому что описывают не последнее предложение.

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

Еще одна вещь, которая меня интересует в замыканиях, - это если существует только одна линия разработки или разрабатываются разные версии (например, замыкания от Sun, от Google, от Apache и т. Д.)?

Ответы [ 2 ]

6 голосов
/ 22 января 2010

Если я правильно помню

CICE был просто синтаксическим сахаром для упрощения создания анонимных классов таким образом, чтобы это выглядело как замыкание.

BGGA было очень мощным предложением, которое позволяло не только истинным замыканиям, но и синтаксису определять структуры, которые выглядели как новые элементы синтаксиса (иначе как (Closable) {block}).

FCM было дополнительным предложением, которое было попыткой стать компромиссом между ними, с предложением полного закрытия, но с лучшим синтаксисом и без некоторых более спорных особенностей BGGA.

Текущее предложение можно найти в http://www.javac.info/closures-v06a.html и http://www.javac.info/closures-v06b.html,, где часть A - это простые полные варианты, а часть B - некоторые из наиболее мощных функций, взятых из BGGA.

2 голосов
/ 24 января 2010

Из того, что я понимаю, Project Lambda , запланированные изменения для добавления лямбда-выражений (некоторые из которых являются замыканиями, а некоторые замыкания являются лямбдами) к языку Java будут представлять собой смесь более старых предложений. Самая последняя доступная в настоящее время информация о предложении - это 0.1 проект спецификации . Чтобы быть в курсе событий, вы можете следить за обновлениями Mark Reinhold .

...