生產有一個項目需要進行一點點改動,因爲改動不大,所以他便沒在測試環境進行測試,因爲測試環境測試比較麻煩,而且生產這個改動就是針對model增加一個字段,然後某個分支進行賦值,操作起來比較簡單,所以就進行改造了。
不出意外的,項目gg了,他怎麼也想不到,出錯的地方,就是因爲他的1個隨後.toString(),我們舉個列子:
public class EcfnPay {
String name;
String age;
String cc;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getCc() {
return cc;
}
public void setCc(String cc) {
this.cc = cc;
}
@Override
public String toString() {
return "EcfnPay [name=" + name + ", age=" + age + ", cc=" + cc + "]";
}
}
public static void main(String[] args) {
EcfnPay ec = new EcfnPay();
ec.setAge("11");
ec.setName("小黃");
System.out.println(ec.toString());
System.out.println(ec.getCc());
System.out.println("完畢---");
}
測試代碼相當簡單,而且這代碼邏輯沒毛病,但是關鍵就是他取對象的某個字段值賦值的時候,隨手.toString(),比如這樣:
null.toString()肯定是不行的,由於該同事在賦值的地方做了異常處理,所以沒能捕獲到具體異常,還打了日誌在生產進行查詢,折騰了一個下午。其實這種錯誤是非常非常低級的,什麼時候建議用toString()呢?
一般而言,只有打印對象的時候,我們可以採用toString()進行輸出,其他任何時候,不建議使用toString(),因爲toString()僅僅對於調試或任何其他需要將對象呈現爲字符串的情況有用,大多時候,進行賦值處理時,一般建議採用三目運算法則,判斷是null還是空字符串,而不建議隨手.toString()。