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



















