Answers:
在编程中,sugar通常指的是那些甜蜜的添加,主要是捷径,使某些结构更易于键入和阅读(实际上,后者在程序的生命周期中是最重要的)。
维基百科上有句法糖的定义,但您应该注意,并不是所有的糖本质上都是句法的(并非所有最近的甜言蜜语都只是编译器的更改)。
这里有一些例子 :
i++
和++i
)。它们的唯一目的是避免编写其他语句。他们是纯糖。+=
,|=
,&=
等都是由同种糖的。人们普遍认为Java不够简洁,特别是与现代语言相比。这就是为什么欢迎那些有助于使代码阅读更快的补充。
最后,我要指出的是,虽然缺少糖会使您的程序变胖,但是糖过多会导致许多不同的方式来编写相同的东西,这会使您的语言变得不稳定,并且程序的连贯性和维护难度会降低。API糖是另一种糖,通常是瘟疫,这使得API较难掌握,尤其是当它是由添加物(例如超载)制成时。
话虽这么说,退潮还是指
在Java 8中,“ Desugaring”似乎具有非常特殊的含义。这似乎是一个笼统的术语,用于表示lambda表达式可以绑定到实际的具体方法调用的各种方式。
如果您对特定内容感兴趣,则有关“ Lambda表达式的翻译”的文档似乎提供了正在发生的事情的真实细节。
该文档中的一个关键短语:
将lambda转换为字节码的第一步是将lambda主体分解为一种方法。
通常,javac中的“ desugaring”允许使用预先存在的语言功能来表示某些语言功能。这样就可以用字节码表示它们,而无需对类文件格式进行大的更改。同样由于这个原因,编译器的后端比前端更稳定。这并不意味着每个新语言功能都只是语法糖,绝对不是lambda和方法引用的情况。编译器中还有更多的“ desugaring”示例:
您还可以调查String开关,擦除类型,...