问题背景:
调用公司其他服务的接口时,接口文档中说明了返回的字段类型为Integer,引用类型判断值是否相等,需用equals方法,后来接口返回值字段类型更改为了String,而我们项目的字段类型没更改,虽然都是引用类型,实际值也相等,但是equals方法却是 false。
注意点:
对.equals() 的调用,其中目标和参数的引用类型不兼容时,语法没有报错。虽然这种调用理论上可能有用,但很可能是一个bug。
例:
String numStr = "17";
Integer num = 17;
if(numStr.equals(num))
System.out.println("true");
else
System.out.println("false");
//结果是 false
正确做法:
String numStr = "17";
Integer num = 17;
//先转换成相同类型再进行比较
if(numStr.equals(num + ""))
System.out.println("true");
else
System.out.println("false");
//结果是 true