老师有个疑问

老师有个疑问

泛型这块,感觉模模糊糊说了一些泛型相关的东西,但是没有具体的举例说有何用,只是介绍了格式?想了解下泛型简单的应用,谢谢老师


正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,

 1、关于泛型,目前阶段应用比较多的是在List 以及 Map 中进行使用, 例如  List<String> list = new ArrayList<String>  ();   这样写上泛型,我们就能规定,这个List中只能添加Stirng类型的数据了。Map中同理。

2、public void two(List<? extends Animal> list)  的意思是,传入的参数必须是List ,并且这个list中存的必须是 ? extends Animal。 (一般我们这里是写具体的泛型的而不是用<? extends Animal>,因为这样只有null可以添加到这个list中去)。 例如:List<Animal> list = new ArrayList<Animal>(); list中只能存放Animal或者其子类  并且没有同学one的这种写法,编译就是不通过的

http://img1.sycdn.imooc.com//climg/5e0f025009d7ab6406120148.jpg

同学是想问以下图片这种嘛?

http://img1.sycdn.imooc.com//climg/5e0f027f09817a8906430203.jpg

如果是,则前边的<T> 表示这是一个泛型方法。如果不写,直接写后边的泛型参数是会报错的哦

http://img1.sycdn.imooc.com//climg/5e0f02ae098d233202960071.jpg


这里同学记住是泛型方法的写法就可以了。 在目前阶段,List和Map中应用泛型比较多,在底层的代码中,会用到泛型方法等,例如反射等,同学现在不必纠结,先记住现在的应用就可以。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~


  • 慕标8012353 提问者 #1
    有点儿想不通为什么泛型限定<? extends Animal>的List集合只能传入null元素
    2020-01-04 01:54:07
  • 好帮手慕小脸 回复 提问者 慕标8012353 #2
    同学你好,只能传入null是因为java中的通配符“上界“ 上界的list只能get,不能add,确切地说不能add出除null之外的对象,包括Object。 同学不需要纠结,目前这里记住就好。 如果我的回答解决了你疑惑,请采纳,祝学习愉快~
    2020-01-04 11:48:20
好帮手慕小尤 2020-01-02 10:12:22

同学你好,使用泛型可以提高java程序的类型安全,泛型也可以使编译器知道变量的类型限制,进而可以在更高程度上验证类型假设。如果不用泛型,则使用强制类型转换,而强制类型转换不安全,在运行期可能发生ClassCast Exception异常,如果使用泛型,则会在编译期就能发现该错误。具体案例,老师在1-1小节(0.18分)中有具体讲解,同学可以进行查看:https://class.imooc.com/lesson/995#mid=23654  

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

  • 提问者 慕标8012353 #1
    那还个方式来问, 1、泛型方法、泛型类、参数中使用泛型的应用场景?因为都是介绍模板没有什么实际的场景就不知道什么时候该使用或者不使用 2、泛型方法的讲解有点看不懂,什么时候该用到泛型方法呢? 3、【public <? extends Animal> void one(List list)】与 【public void two(List<? extends Animal> list)】这两个是不是都是限定List集合必须是Animal或其子类,是不是除了格式上的区别就没区别了呢?
    2020-01-03 02:20:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师