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