String.valueOf(Object)与Objects.toString(Object)
便捷的方法String.valueOf(Object) 自JDK 1.0起就存在,并且是我經常使用的JDK提供的方法之一。 我以前曾在博客上評論過它的價值 。 JDK 1.7引入了 Objects類 ,其中包括Objects.toString(Object)方法。 這篇文章比較了這兩種聽起來相似的方法。
這兩個方法String.valueOf(Object)和Objects.toString(Object)本質上都做相同的事情:如果傳入的對象不為null則調用它的toString()方法;如果將null傳遞給它們,則返回字符串“ null” 。 簡而言之,這兩種方法都旨在提供一種簡單的方法來調用對象的toString()而不必擔心如果結果為null NullPointerException 。
下表比較了String.valueOf(Object)和Objects.toString(Object) 。
| Java SE 10方法Javadoc | “ 返回Object參數的字符串表示形式。 “ | “ 返回調用toString用于非結果null論證和‘空’的null參數。 “ |
| Java SE 10返回Javadoc | “如果參數為null ,則字符串等于“ null”; 否則,將返回obj.toString()的值。” | “打電話的結果toString一個非null空‘的說法和’ null的說法” |
| 方法修飾符 | public static | public static |
| 重載版本 | valueOf(布爾值) valueOf(字符) valueOf(char [],int,int) valueOf(雙) valueOf(float) valueOf(int) valueOf(long) valueOf(對象) | toString(Object) toString(Object,String) |
從表面上看, String.valueOf(Object)和Objects.toString(Object)似乎做同樣的事情。 事實證明它們是相同的。 這是來自OpenJDK的Objects.toString(Object)的代碼:
OpenJDK: Objects.toString(Object)定義
public static String toString(Object o) {return String.valueOf(o); }上面的代碼片段顯示Objects.toString(Object)方法只是委托給String.valueOf(Object)方法。 接下來顯示String.valueOf(Object)的OpenJDK實現。
OpenJDK: String.valueOf(Object)定義
public static String valueOf(Object obj) {return (obj == null) ? "null" : obj.toString(); }上面的代碼片段顯示,當需要使用對象的toString()表示形式時,可以調用String.valueOf(Object)或Objects.toString(Object)而沒有NullPointerException風險。 可能有較小的理由偏愛另一個,我通常選擇直接調用String.valueOf(Object)不是通過Objects.toString(Object)對該方法的間接調用。
雖然我通常在默認情況下使用String.valueOf(Object) [而不是Objects.toString(Object) ],但如果傳入的對象為null時,我希望返回字符串“ null”,則替代重載方法Objects.toString(Object,字符串)的優點是,如果傳入的對象為null ,則允許用戶指定要由該方法返回的任何字符串。 因此,例如,如果傳入的對象為null ,則可以使用此方法返回空字符串( "" ),字符串“ nil”,字符串“ none”或任何其他任意字符串。 接下來顯示Objects.toString(Object, String)的OpenJDK代碼清單。
OpenJDK: Objects.toString(Object, String)定義
public static String toString(Object o, String nullDefault) {return (o != null) ? o.toString() : nullDefault; }關于Objects.toString(Object, String)實現的注意事項是,如果將null傳遞給此方法作為第二個參數,則該方法將返回null (而不是字符串“ null”或任何其他字符串) 。
使用String.valueOf(Object) , Objects.toString(Object)和Objects.toString(Object, String)可以輕松提供對象的字符串表示形式,而無需編寫顯式檢查null 。
翻譯自: https://www.javacodegeeks.com/2018/08/valueofobject-tostringobject.html
總結
以上是生活随笔為你收集整理的String.valueOf(Object)与Objects.toString(Object)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 宁美国度电脑系统(宁美国度电脑系统安装)
- 下一篇: 雅马哈功放dsp怎么设置(雅马哈功放ds