Java List能存字符串对象吗?
IDEA分享:idea破解篇
Navicat分享:Navicat破解篇
背景
今天在写代码时,想到一个有趣的面试题,List<Integer>能存String对象吗?
粗看好像问了一个Java语法相关的知识点,其实我想考的是你对Java泛型的理解。
回答不能,那么可以说对Java泛型几乎是没有理解,而仅仅回答能,也是远远不够的。
一、怎么存?
首先来讲讲怎么存,话不多说,直接上代码,也不复杂大家都能看懂。
我们通过反射来实现,最终打印输出的内容是[1, String],是不是有点匪夷所思。当然这里需要提一点,直接通过add方法来添加"String"字符串对象,显然是不可行的。
或许回答不能的,这个结论应该从这里来,市面上的idea在编写时也都会报错。
二、为什么能存?
关键点来了,我所期望的是面试者能提出泛型擦除,与Java的泛型只在编译期生效。
简单整个笔试可能出现的题,或许又能加深你对它的印象。
接着问,以下两个方法能否定义在同一个类的成员方法中,
显然也是不能的,另外有一点我可能还会问一下,以上代码入参一致的话是不是方法的重载?显然也不是,方法的重载不考虑返回值
三、泛型存在的意义?
紧接着,又一个关键点来了,既然有擦除那么泛型存在的意义是?
1、泛型避免了代码在运行时才发现问题,例如上章节的例子。
2、如果都是使用Object基类替代,使用时需要强转,泛型减少了ClassCastException发生。
3、减少来自强制类型转换的性能消耗。
转载原作者链接:mp.weixin.qq.com/s/nYp_7t83LC9U4Iu3DSar4Q
更多优秀文章,请通过一下获取
kdocs.cn/l/cg7vXzuZCKlM