You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改指定代码段使Integer与String的equals判断返回true?

解决方案

这道题的核心是利用Java泛型的类型擦除特性——编译后的泛型集合(比如ArrayList<Integer>)在运行时其实是存储Object类型的对象,泛型约束仅在编译阶段生效。

你只需要在指定区域修改代码,通过强制类型转换欺骗编译器,往集合里存入字符串对象:

// Change starts here
intList.add((Integer) (Object) "Hello World");
// Change ends here

原理说明:

  • 泛型擦除后,ArrayList内部实际存储的是Object,所以可以存入任意类型的对象;
  • (Object) "Hello World"将字符串转成Object,再强制转成Integer只是让编译器通过语法检查,运行时不会改变对象的实际类型;
  • 当调用intList.get(0).equals("Hello World")时,实际是字符串对象调用equals方法和目标字符串比较,结果为true,程序就会输出Ok。

你之前尝试哈希值的思路走不通,因为Integer的equals方法会先判断传入对象的类型是否为Integer,类型不匹配直接返回false,哪怕哈希值巧合相同也没用。

内容的提问来源于stack exchange,提问作者Student23452345

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:52:05