Java集合操控常见错误与最佳实践
错误69:搜索无关类型的对象
泛型技巧的类型安全漏洞
在Java引入参数化类型通过前,集合元素只能声明为Object类型,导致能够随意将字符串添加到数值列表中。虽然泛型机制对添加元素的手段进行了类型约束,但搜索和删除相关方法仍保留了Object类型的参数设计。这包括以下关键方法:
- Collection接口:
contains(Object)和remove(Object) - List接口:
indexOf(Object)和lastIndexOf(Object) - Map接口:
containsKey(Object)、get(Object)等7个方法
静默失败的隐患
当传入类型不匹配的参数时,这些技巧不会抛出异常,而是返回"未找到"的标识:
- 搜索方法返回
false或-1 - 删除方法不执行任何执行
retainAll()方法保留空集合
这种静默处理使得类型错误可能直到生产环境才被发现,典型场景如新旧API混用时:

浙公网安备 33010602011771号