zoukankan      html  css  js  c++  java
  • 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),不报错才怪。。

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

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

    若本文内容有误,请指出,我会更改,谢谢! 转载请注明出处。
  • 相关阅读:
    jQuery实现横向滚动切换选中
    jQuery源码分析(6)
    jQuery源码分析(5)
    jQuery源码分析(4)
    jQuery源码分析(3)
    jQuery源码分析(2)
    jQuery源码分析(1)
    gulp搭建前端自动化开发环境
    iview表格动态数据实现合并功能
    iview动态表格实现并实现单行可增删(表头与内容都是动态获取)----完整版
  • 原文地址:https://www.cnblogs.com/yellowgg/p/14664480.html
Copyright © 2011-2022 走看看