все - словарь java программиста




Что такое термины «сахар», «desugar» в контексте Java 8? (2)

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

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

Ключевая фраза из документа:

Первый шаг перевода лямбда в байт-код - это обессоливание лямбда-тела в метод.

Я слышу о «сахарировании» и «обессеривании» чаще в Java 8, что означают эти термины? являются ли они концептуальными или синтаксическими.

Пример:

Повторная обработка повторяющегося цикла в java

Наблюдения за синтаксическим сахаром в компиляции.


В целом «desugaring» в javac позволяет представить некоторые языковые функции с уже существующими. Это позволяет представить их в байт-коде, не внося больших изменений в формат файла класса. Кроме того, по этой причине контингер компилятора более стабилен, чем интерфейсный. Это не означает, что каждая новая языковая функция является просто синтаксическим сахаром, так как это определенно не относится к лямбдам и методам. В компиляторе есть примеры «desugaring»:

  • для каждого цикла «desugared» для стиля C для циклов
  • утверждения «отстранены» от предложения if
  • внутренние классы представлены как отдельный класс

Вы также можете исследовать, что происходит с переключателем String, стирать тип, ...





java-8