在Java 8的上下文中,什么是“糖”,“desugar”术语?
我在Java 8中更频繁地听到“糖化”和“脱糖”,这些术语是什么意思?它们是概念性的还是句法上的。
一些例子:
默认迭代循环重新苏取到 java
编译中关于句法糖的观察。
我在Java 8中更频繁地听到“糖化”和“脱糖”,这些术语是什么意思?它们是概念性的还是句法上的。
一些例子:
默认迭代循环重新苏取到 java
编译中关于句法糖的观察。
在编程中,sugar通常是指那些甜蜜的补充,主要是快捷方式,使一些结构更容易键入和阅读(在实践中,后者是程序生命周期中最重要的)。
维基百科对语法糖有一个定义,但你应该注意,并不是所有的糖本质上都是语法的(并非所有最近的甜蜜添加都只是编译器的更改)。
以下是一些例子:
i++
++i
+=
、、等均由同一种类的糖制成。|=
&=
Java被广泛认为不够简洁,特别是与现代语言相比。这就是为什么那些有助于使代码更快阅读的添加是受欢迎的。
最后,我只想指出,虽然缺乏糖会使你的程序变胖,但过量的糖,导致许多不同的方法来编写相同的东西,会让你的语言变得恶心,你的程序不那么连贯,更难维护。另一种糖,API糖,通常是一种瘟疫,它使API更难掌握,特别是当它由添加物制成时(例如超载)。
话虽如此,脱糖是指
“Desugaring”在Java 8中似乎有一个非常具体的含义。它似乎是一个包罗万象的术语,用于表示 lambda 表达式可能绑定到实际具体方法调用的各种方式。
这篇关于“Lambda 表达式的翻译”的文档提供了有关正在发生的事情的真实细节,如果您对具体细节感兴趣。
文档中的关键短语:
将 lambda 转换为字节码的第一步是将 lambda 主体解加为方法。