1、java代码
public class TestContains {
public static void main(String[] args) {
//类型为int
int i = 1;
//泛型为String
List<String> list = new ArrayList<String>();
list.add("1");
list.add("2");
System.out.println(list.contains(i));//false
}
}2、scala代码
object TestArrContains {
def main(args: Array[String]): Unit = {
val arr = "1,2".split(",")
val a:Int = 1
println(arr.contains(a))//false
}
}注意:代码多了,比较容易出现的错误,而开发工具又没有提示类型不一致错误,很容易忽略
本来想得到的结果为true,却发现为false。
查看java源码:
boolean contains(Object o);发现方法内部为Object
查看scala源码
def contains(elem: Any): Boolean = exists (_ == elem)方法内部为Any
也难怪开发工具不提示错误

本文通过具体的Java和Scala代码示例,深入探讨了在使用List和Array时调用contains方法可能出现的类型不匹配问题,并解释了底层实现原理。
969

被折叠的 条评论
为什么被折叠?



