java語(yǔ)法糖是什么
發(fā)布時(shí)間:
2023-04-17 14:12:24
本文從Java編譯原理的角度,對(duì)Java中的語(yǔ)法糖的原理和用法進(jìn)行了分析,深入研究字節(jié)碼和類(lèi)文件,幫助你學(xué)習(xí)如何使用Java語(yǔ)法糖,并理解其背后的原理。
語(yǔ)法糖
語(yǔ)法糖,又稱(chēng)糖衣語(yǔ)法,是英國(guó)計(jì)算機(jī)科學(xué)家Peter J. Landin創(chuàng)造的一個(gè)術(shù)語(yǔ),指的是添加到計(jì)算機(jī)語(yǔ)言中的一種語(yǔ)法,對(duì)語(yǔ)言的功能沒(méi)有影響,但對(duì)程序員來(lái)說(shuō)更容易使用。簡(jiǎn)而言之,語(yǔ)法糖使程序更簡(jiǎn)潔,更易讀。
有趣的是,在編程領(lǐng)域,除了語(yǔ)法糖之外,還有句法鹽和句法糖的說(shuō)法,
語(yǔ)法糖幾乎存在于我們所知的每一種編程語(yǔ)言中。筆者認(rèn)為,語(yǔ)法糖的多少是判斷一種語(yǔ)言是否足夠好的標(biāo)準(zhǔn)之一。
很多人說(shuō)Java是一種 "低糖語(yǔ)言",但事實(shí)上,從Java 7開(kāi)始,就有很多糖加入到Java語(yǔ)言中,主要是在 "Project Coin "項(xiàng)目下。盡管有些人仍然認(rèn)為Java是低糖語(yǔ)言,但它在未來(lái)將繼續(xù)向 "高糖 "發(fā)展。
解決句法糖的問(wèn)題
如前所述,語(yǔ)法糖的存在主要是為了方便開(kāi)發(fā)者使用它。然而,Java虛擬機(jī)并不支持這些語(yǔ)法糖。這些語(yǔ)法糖在編譯階段被還原為簡(jiǎn)單的基本句法結(jié)構(gòu),這個(gè)過(guò)程被稱(chēng)為去語(yǔ)法糖。
說(shuō)到編譯,你肯定知道,Java語(yǔ)言中的javac命令將一個(gè)后綴為.java的源文件編譯成后綴為.class的字節(jié)碼,可以在Java虛擬機(jī)上運(yùn)行。
如果你看一下com.sun.tools.javac.main.JavaCompiler的源代碼,你會(huì)發(fā)現(xiàn)編譯()的一個(gè)步驟是調(diào)用desugar(),這個(gè)方法負(fù)責(zé)實(shí)現(xiàn)去語(yǔ)法糖。
Java中最常用的語(yǔ)法糖是泛型、變長(zhǎng)參數(shù)、條件編譯、自動(dòng)拆裝箱、內(nèi)部類(lèi)等等。
上一篇:
python數(shù)據(jù)類(lèi)型有哪些
下一篇:
MySQL導(dǎo)出sql腳本文件操作步驟