Java的String.format可以静态导入
JDK-8203630 [“為String :: format添加等效的實(shí)例方法”]假定“將String :: format實(shí)現(xiàn)為靜態(tài)的參數(shù)似乎是可以靜態(tài)導(dǎo)入 format方法,因此其行為與C的sprintf比較 ?!?在有關(guān)該主題的StackOverflow.com線程上 , Brandon Yarbrough寫道:“通過(guò)使該方法靜態(tài)化,您可以使用格式,這對(duì)于習(xí)慣于printf() C程序員來(lái)說(shuō)是非常熟悉和簡(jiǎn)潔的?!?Yarbrough提供了一個(gè)代碼示例,然后得出結(jié)論:“通過(guò)使用靜態(tài)導(dǎo)入,printf看起來(lái)幾乎就像它們?cè)贑中一樣。太棒了!”
當(dāng)我在JDK-8203630中閱讀有關(guān)此內(nèi)容的內(nèi)容時(shí),我想知道為什么我在使用它時(shí)沒(méi)有靜態(tài)導(dǎo)入String.format ,因?yàn)楝F(xiàn)在看來(lái)這樣做很明顯。 在本文中,我將簡(jiǎn)要介紹一些我考慮過(guò)的個(gè)人理論,以解釋為什么我(以及許多其他人)并未考慮一致地靜態(tài)導(dǎo)入String.format 。
當(dāng)J2SE 5引入靜態(tài)導(dǎo)入時(shí), 有關(guān)該功能的新文檔提出了一個(gè)問(wèn)題:“那么什么時(shí)候應(yīng)該使用靜態(tài)導(dǎo)入?” 它以強(qiáng)調(diào)的方式回答了自己的問(wèn)題(我沒(méi)有加粗體 ),“ 非常謹(jǐn)慎! ”然后,該段繼續(xù)提供了更多有關(guān)靜態(tài)進(jìn)口的適當(dāng)和不當(dāng)使用以及過(guò)度使用靜態(tài)進(jìn)口的負(fù)面影響的詳細(xì)信息。
盡管原始文檔著重警告過(guò)度使用靜態(tài)導(dǎo)入,但是隨著開發(fā)人員逐漸習(xí)慣了靜態(tài)導(dǎo)入,它們的使用確實(shí)在逐漸增加。 2012年,我通過(guò)博客文章問(wèn)道:“ Java越來(lái)越接受靜態(tài)導(dǎo)入嗎?” 那時(shí),我感到它們?cè)絹?lái)越被接受,尤其是在單元測(cè)試環(huán)境中以及在專注于提供“ 流利 ” API的更現(xiàn)代的庫(kù)和框架中使用它們時(shí) 。 仍然以某種方式,我不認(rèn)為始終將靜態(tài)導(dǎo)入應(yīng)用于我的String.format使用。
我不經(jīng)常使用String.format ,所以我認(rèn)為也許我只是沒(méi)有太多機(jī)會(huì)考慮這一點(diǎn)。 但是,即使我使用的次數(shù)相對(duì)較少,我也不記得曾經(jīng)靜態(tài)地導(dǎo)入過(guò)它。 當(dāng)我進(jìn)一步考慮這個(gè)問(wèn)題時(shí),我意識(shí)到我可能不考慮靜態(tài)導(dǎo)入String.format的主要原因與大多數(shù)開發(fā)人員沒(méi)有考慮的原因相同:大多數(shù)流行且易于使用的在線方法如何使用String.format示例請(qǐng)勿使用靜態(tài)導(dǎo)入!
在撰寫涵蓋某功能的博客或文章時(shí),尤其是在入門級(jí)別時(shí),不要進(jìn)行靜態(tài)導(dǎo)入之類的操作會(huì)很有用,因?yàn)轱@式拼寫出類名可以提高開發(fā)人員理解方法中的位置的能力。代碼來(lái)自。 但是,這也意味著,如果給定的開發(fā)人員閱讀了大量文章和帖子,并且其中沒(méi)有一個(gè)顯示使用靜態(tài)導(dǎo)入,則該開發(fā)人員很容易使用所有這些示例中所示的API,而無(wú)需考慮靜態(tài)導(dǎo)入的可能性。
以下是有關(guān)使用String.format一些介紹性文章。 在撰寫本文時(shí),他們還沒(méi)有通過(guò)靜態(tài)導(dǎo)入演示String.format使用。 我要強(qiáng)調(diào)指出,這并沒(méi)有脫離這些資源的質(zhì)量; 如果有的話,其中的一些很棒。 相反,這是用作解釋為什么String.format似乎很少靜態(tài)地以Java代碼靜態(tài)導(dǎo)入的證據(jù)。
- 適用于java.util.Formatter的JDK 10 Javadoc聲明“類似于C的sprintf(3) ,可以使用靜態(tài)方法String.format格式化字符串”,然后使用String.format提供代碼示例,而不是靜態(tài)導(dǎo)入。
- Baeldung的詳細(xì)“ java.util.Formatter指南 ”提供了許多代碼清單,這些清單證明了String.format使用,但是沒(méi)有一個(gè)是靜態(tài)導(dǎo)入的。
- DZone詳細(xì)的文章“ Java字符串格式示例 ”演示了如何使用String.format而不進(jìn)行靜態(tài)導(dǎo)入。
- “ Java字符串格式示例 ”一文中的“ Java Code Geeks示例 ”以使用String.format而不靜態(tài)導(dǎo)入的示例結(jié)尾。
- 最近發(fā)布的“ 使用String.format方法進(jìn)行Java String格式化(如'sprintf') ”提供了有用的討論和示例,但并未討論靜態(tài)導(dǎo)入String.format 。
- GeeksForGeeks的“ 帶示例的Java String format() ”提供了String.format使用的多個(gè)示例,但是沒(méi)有一個(gè)是靜態(tài)導(dǎo)入的。
- “ Java字符串格式示例 ”提供了不使用靜態(tài)導(dǎo)入而應(yīng)用String.format多個(gè)示例。
- “ 用示例解釋的Java String format()方法 ”不會(huì)在其多個(gè)示例中靜態(tài)導(dǎo)入String.format 。
- StackOverflow.com線程“如何用Java格式化字符串”中提供的示例不會(huì)靜態(tài)導(dǎo)入String.format 。
- “ Java String format()方法 ”的String.format()的多個(gè)示例不會(huì)靜態(tài)導(dǎo)入它。
以上文章中的許多示例都使用String.format()生成分配給局部變量的String 。 在這種情況下,可以說(shuō)靜態(tài)導(dǎo)入的價(jià)值要小于在更大的代碼行中使用它格式化String的價(jià)值。 例如,靜態(tài)導(dǎo)入String.format()更為“流利”,這樣,當(dāng)在一行代碼中進(jìn)行格式化時(shí),只需指定format()即可完成其他操作,而不僅僅是將格式化后的字符串分配給局部變量。
這篇博文的主要目的是指出/提醒我們可以靜態(tài)導(dǎo)入String.format從而使我們的代碼更具可讀性。 但是,在關(guān)于該主題的OpenJDK core-libs-dev郵件列表的簡(jiǎn)短討論中 ,還有其他一些有趣的觀點(diǎn),我將在這里簡(jiǎn)要指出:
- JDK-8203630通過(guò)以下示例指出了在某些情況下實(shí)例方法如何使代碼更具可讀性: "This result is %d".format(result);
- RémiForax指出了一些反對(duì)在String 中添加實(shí)例 format方法的參數(shù) :
- 與static方法和實(shí)例方法相關(guān)聯(lián)的問(wèn)題在類中共享相同的名稱。
無(wú)論實(shí)例 format方法是否出現(xiàn)在Java的String ,有關(guān)JDK-8203444 , JDK-8203630以及相關(guān)郵件列表討論的內(nèi)容 ,為我提供了一些思考的機(jī)會(huì)。 如果沒(méi)有其他問(wèn)題,在考慮使用String.format時(shí),我絕對(duì)會(huì)更傾向于權(quán)衡其性能,而在使用它時(shí),將更有可能靜態(tài)導(dǎo)入它。
翻譯自: https://www.javacodegeeks.com/2018/05/javas-string-format-can-be-statically-imported.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Java的String.format可以静态导入的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 安卓图片浏览器(安卓图片浏览)
- 下一篇: Java 8过滤器,地图,收集和流示例