Я чаще слышу о «шугаринге» и «десугаривании» в Java 8, что означают эти термины? они концептуальные или синтаксические.
Некоторый пример:
Повторное повторение цикла по умолчанию для java
Замечания о синтаксическом сахаре в компиляции.
сахар , в программировании, обычно относится к сладким дополнениям, в основном ярлыкам, которые упрощают ввод и чтение некоторых конструкций (последнее на практике является наиболее важным в жизненном цикле вашей программы).
В Википедии есть определение синтаксического сахара, но вы должны отметить, что не весь сахар, по сути, является синтаксическим (не все недавние сладкие добавления были просто изменениями компилятора).
Вот несколько примеров :
i++
и ++i
). Их единственная цель - избежать написания дополнительных заявлений. Это чистый сахар.+=
, |=
, &=
И т.д. сделаны из того же вида сахара.Многие считают Java недостаточно лаконичной, особенно по сравнению с современными языками. Поэтому приветствуются те дополнения, которые помогают ускорить чтение кода.
В заключение отмечу, что, хотя недостаток сахара может сделать вашу программу жирной, избыток сахара, ведущий к множеству различных способов написания одних и тех же вещей, может сделать ваш язык неприятным, а вашу программу менее связной и трудной для поддержки . Другой вид сахара, сахар API, чаще всего является чумой, из-за которой API труднее понять, особенно когда он состоит из дополнений (например, перегрузки).
При этом десугаринг относится либо к
«Обесуглероживание» в Java 8 имеет очень специфическое значение. Кажется, это универсальный термин, обозначающий различные способы привязки лямбда-выражения к реальному вызову конкретного метода.
Этот документ «Перевод лямбда-выражений», кажется, содержит реальные подробности того, что происходит, если вас интересуют детали.
Ключевая фраза из документа:
источник
В целом «обессахаривание» в javac позволяет отображать некоторые языковые функции с уже существующими. Это позволяет представить их в байт-коде, не внося больших изменений в формат файла класса. Также по этой причине внутренняя часть компилятора более стабильна, чем интерфейсная. Это не означает, что каждая новая языковая функция - это просто синтаксический сахар, что определенно не относится к лямбдам и ссылкам на методы. В компиляторе есть и другие примеры «обессахаривания»:
Вы также можете исследовать, что происходит с переключателем String, стиранием типа, ...
источник