Как замыкания в Java позволят разработке API заменить дизайн языка? - PullRequest
13 голосов
/ 22 января 2011

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

Однако один из ключевых моментов, упомянутых в проекте предложения (http://www.javac.info/consensus-closures-jsr.html), находится в разделе 2.5, пункт e:

(спецификация улучшит язык)

e) , позволяющий будущему дизайну API заменить дизайн языка для расширения платформы Java.

Я изо всех сил пытаюсь понять, как это происходит, конечно, языковой дизайн - это дизайн самого языка, и его нельзя заменить на API, если Java не открывает все виды странных API, используя замыкания для изменение языка (что, я сильно сомневаюсь, произойдет)

Может кто-нибудь пролить некоторый свет на это и, возможно, привести пример чего-то, что ранее требовало смены языка, но с добавлением замыканий больше не требует этого?

Ответы [ 2 ]

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

Дизайн API и языковые функции определенно взаимозаменяемы в некоторых моментах. Просто посмотрите на что-то вроде синхронизированного ключевого слова в Java. Это ключевое слово, но оно также может быть реализовано как API, если язык достаточно не многословен. Аннотации являются еще одним примером. Другой способ обойти аннотацию @Stateless, которая делает все методы в классе транзакций, также мог бы быть ключевым словом языка.

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

Можно сделать грубый пример, для каждого:

for_each(myFooList, #(Foo foo) { 
   String something = foo.getBar() + foo.getKaz();
   System.out.println(something);
});

Возможно, не на 100% чистее, чем наличие для каждого цикла, напрямую поддерживаемого синтаксисом языка, но это позволяет каждому легко испытать языковые улучшения.

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

Для тех, кто не читал черновик предложения, ниже приведено несколько подробностей в том же документе:

Добавление замыканий упрощает эволюцию платформы Java.Многие существующие языковые RFE в общедоступной базе данных ошибок Sun могут быть перенаправлены как запросы API для методов, которые получают замыкания .Многие будущие потребности в дополнительных формах выписки могут быть удовлетворены путем добавления библиотечных методов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...