在項(xiàng)目開發(fā)測試的過程中甚至上線后伦乔,程序的崩潰都是必然的忌锯,而類型轉(zhuǎn)換引起的崩潰次數(shù)也是不在少數(shù)棠赛,常見的就包括類型轉(zhuǎn)換異常引起的崩潰凭疮,比如通常對obj對象類型的轉(zhuǎn)換饭耳,一般都是toString后進(jìn)行轉(zhuǎn)換,如下:
int num = Integer.valueOf(obj.toString());
試想一下执解,一旦obj為空哥攘,那么調(diào)用obj.toString肯定會(huì)報(bào)空指針錯(cuò)誤,這個(gè)obj通常都是從Json數(shù)據(jù)中取出來的,對于服務(wù)端返回的json數(shù)據(jù)逝淹,是無法保證其永不為空的
比如好的做法是耕姊,編寫一個(gè)類型安全轉(zhuǎn)換函數(shù)convertToInt,實(shí)現(xiàn)代碼如下,如果轉(zhuǎn)換失敗栅葡,就返回其默認(rèn)值茉兰。
public final static int convertToInt(Object value,int defaultValue){
if(value==null || "".equals(value.toString().trim())){
return defaultValue;
}
try {
return Integer.valueOf(value.toString());
} catch (Exception e) {
try {
return Double.valueOf((value.toString())).intValue();
} catch (Exception e1) {
return defaultValue;
}
}
}
把這個(gè)方法就可以放到Utils類中,每當(dāng)要把一個(gè)object對象轉(zhuǎn)換為整型時(shí)欣簇,都使用該方法规脸,這樣就不會(huì)崩潰了。
int num = Utils.convertToInt(obj, 0);
以上只是其中一中類型安全轉(zhuǎn)換函數(shù)熊咽,相應(yīng)的莫鸭,我們還需要在Utils中提供諸如object到long、double横殴、float等類型的安全轉(zhuǎn)換函數(shù)抡蛙,以滿足開發(fā)要求庙睡。