今天專案支付回呼出了點問題,原來負責的同事已經離職了,就安排我幫忙查一下,后來排查出來之后覺得應該記錄一下,防止踩坑,
enum EEnum {
zhifubao(1, "支付寶"),
weixin(2, "微信"),
xinyongka(3, "信用卡"),
;
private int code;
private String name;
EEnum(int code, String name) {
this.code = code;
this.name = name;
}
public Integer getCode() {
return code;
}
}
public static void main(String[] args) {
List<Integer> list = Lists.newArrayList(EEnum.zhifubao.getCode(), EEnum.xinyongka.getCode());
list.remove(EEnum.xinyongka.getCode());
}
以上代碼乍一看好像沒啥,但運行起來就報錯了
java.lang.IndexOutOfBoundsException: Index: 3, Size: 2
at java.util.ArrayList.rangeCheck(ArrayList.java:657)
at java.util.ArrayList.remove(ArrayList.java:496)
at com.example.demo.mapper.HelperExtensionMapperTest.testInsert(HelperExtensionMapperTest.java:46)
發現報錯結果是索引越界,一看remove(),發現了它的兩個多載方法為
E remove(int index);
boolean remove(Object o);
多載兩個方法一個引數是int,一個引數是Object,再一看,原來列舉里的code是int型別,兩個元素,remove(3),不報錯才怪,,
也不知道當時是怎么通過測驗的,,,
在此記錄一下,這種低級的隱藏的坑就越要吸取教訓,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/276576.html
標籤:其他
