Java教程

Java List<String> IndexOf(object e)坑

本文主要是介绍Java List<String> IndexOf(object e)坑,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

近来,排查项目代码时,发现一处意外的坑。这个坑感觉很低级,也很奇怪:

在java中声明一个List list,然后用indexOf(object e)进行查找,这时分两种情况:

情况一: 如果传入参数为string类型,则一切正常。能正确找到并返回索引。

情况二: 如果传入参数为integer,运行也一切正常,但是始终返回-1。 最终翻了下函数定义:

int indexOf(Object o);

参数是Object,于是不禁想:如果你没有做严格的类型转换,转换为String,那么你为啥要讲接口参数设计为Object类型呢?

这种情况,我分析应该是当初设计者并没有严格考虑,不同类型的参数装箱后的实际表现,而仅仅是设计一个通用的接口,待以后再补上这个口子,但是到目前为止,这个口子依然存在,而且依然没有人去细究这个设计及所有可能遇到的情况。这或许是java的一个历史遗留问题。

这篇关于Java List<String> IndexOf(object e)坑的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!