Как закрытие в Java позволит дизайну API заменить языковой дизайн?

StackOverflow https://stackoverflow.com/questions/4764539

  •  16-10-2019
  •  | 
  •  

Вопрос

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

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

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

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

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

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top