0.描述
在一個返回值為void方法中使用了return餐茵。這句話的意思是在一個并不期望得到返回值的方法中使用了 **return; ** 語句。
1.問題描述
BlockView 類中包含 int x递递,與 int y 兩個屬性,在方法中執(zhí)行完對相應BlockView對象的處理后有時會將x啥么、y設置為-1登舞, 而代碼②中由于執(zhí)行了return;語句,造成在方法結(jié)束時未執(zhí)行清理語句blocks.clear();悬荣,導致這些被置為-1的對象還存在于blocks中菠秒,進而導致下次進入這個方法時,由于一些BlockView對象的x氯迂、y值為-1,導致代碼 ① 部分會出現(xiàn)數(shù)組下標為-1的異常践叠。
類似關于return的問題我已經(jīng)遇到2回了╮(╯▽╰)╭敢不敢再粗心點、
2.代碼示例
private boolean beginMoveToLeft(List<BlockView> blocks) {
if(blocks==null ||blocks.size()==0) {
return ;
}
if(blocks.size() == 2){
...
} if(blocks.size() == 3) { //
BlockView b0 = blocks.get(0);
BlockView b1 = blocks.get(1);
BlockView b2 = blocks.get(2);
int x0 = b0.getLocation()[0];//
int x1 = b1.getLocation()[0];//
int x2 = b2.getLocation()[0];//x坐標
int y = b0.getLocation()[1]; //y坐標
if(b0.isEquals(b1.getPower())) {//②
...//對 b0 b1 b2 分別進行操作
... //將 他們的x y 置為-1
dyadicArray[x0][y] = -1; // ① 二維數(shù)組矩陣記錄位置
return ;
}
if(b1.isEquals(b2.getPower())) {
...//
}else{
}
} else if(blocks.size() == 4) {
...
}
blocks.clear();//**************重點***************
}
3.總結(jié)
啰里啰嗦一大堆嚼蚀,總結(jié)起來一句話:“使用return要當心禁灼,看看后面有沒有因為提前終止而未執(zhí)行到的語句”。
END
將開發(fā)中遇到的問題記錄下來轿曙;再遇到奇怪問題來看一眼弄捕;想必會有啟發(fā)僻孝;