今天我在遗留代码中发现了一个错误,这让我有了一个令人震惊的发现:
String s = null + ""; //results in "null" string
s = String.valueOf(null); // NullPointerException is thrown
Integer i = null;
s = String.valueOf(i); //results in "null" string
Run Code Online (Sandbox Code Playgroud)
第一个问题是:为什么会发生这种意想不到的行为?
这意味着像这样的方便代码:
String age = person.getAge() + "";
Run Code Online (Sandbox Code Playgroud)
是完全出乎意料的。
第二个问题:获得 null 而不是“null”的最佳(最优雅)方法是什么
String.valueOf(null)public static String valueOf(char data[])由于方法重载解析规则而进行的调用(char[]比 更具体Object)。该方法抛出NullPointException一个null参数。
String.valueOf(i)调用public static String valueOf(Object obj),它返回参数String的“null” null。
为了避免这种异常,要么不调用s = String.valueOf(null);(您始终可以直接分配s = "null";,要么将值转换为除(例如)null之外的某种类型。char[]s = String.valueOf((String)null);
| 归档时间: |
|
| 查看次数: |
7079 次 |
| 最近记录: |