1. 程式人生 > >String型別數值與Long型別數值比較是否相等

String型別數值與Long型別數值比較是否相等

1.情景再現:

有個兩表,假如分別叫表A、表B,它們都有一個欄位存放著使用者id。

現在用beanA和beanB來分別來對應表A和表B。

然後就判斷這連個id欄位是否相等,相等則進一步處理。

2.bug出現了

比較兩個id是否相等的虛擬碼如下:

if (beadA.getId().eqauls(beanB.getId())) {

     //TODO

}

結果沒有任何相等的,但資料庫中資料是有相等的,那麼bug就出現。

問題是出在型別上。beanA中id的型別是String,beanB中id的型別是Long,所以以上程式碼中if條件永遠都是false。

我這個問題還是比較隱蔽的,比較兩個值是否相等嘛,但是沒想到在bean中型別是不一樣的,而且這裡也沒有任何提示。

以下為String類equals方法的原始碼:

傳入的是一個Object,

3.解決方法:

if (beadA.getId().eqauls(beanB.getId() +  "" )) {

     //TODO

}