2021-04-15

List.remove()踩坑记录

List remove 踩坑

今天项目支付回调出了点问题,原来负责的同事已经离职了,就安排我帮忙查一下,后来排查出来之后觉得应该记录一下,防止踩坑。

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),不报错才怪。。

也不知道当时是怎么通过测试的。。。

在此记录一下,这种低级的隐藏的坑就越要吸取教训。









原文转载:http://www.shaoqun.com/a/690736.html

跨境电商:https://www.ikjzd.com/

livingsocial:https://www.ikjzd.com/w/714.html

杨帆:https://www.ikjzd.com/w/1648


Listremove踩坑今天项目支付回调出了点问题,原来负责的同事已经离职了,就安排我帮忙查一下,后来排查出来之后觉得应该记录一下,防止踩坑。enumEEnum{zhifubao(1,"支付宝"),weixin(2,"微信"),xinyongka(3,"信用卡"),;privateintcode;privateStringname;EEn
photobucket:https://www.ikjzd.com/w/132
淘粉吧怎么返利:https://www.ikjzd.com/w/1725
美菜:https://www.ikjzd.com/w/1874
每日国际国内经贸要闻——2月20日:https://www.ikjzd.com/home/116246
口述:色狼上司对我女友动手动脚:http://lady.shaoqun.com/m/a/2134.html
详解亚马逊上的三大促销利器:https://www.ikjzd.com/home/125740

No comments:

Post a Comment