请选择 进入手机版 | 继续访问电脑版
搜索
房产
装修
汽车
婚嫁
健康
理财
旅游
美食
跳蚤
二手房
租房
招聘
二手车
教育
茶座
我要买房
买东西
装修家居
交友
职场
生活
网购
亲子
情感
龙城车友
找美食
谈婚论嫁
美女
兴趣
八卦
宠物
手机

Java自学-泛型 集合中的泛型

[复制链接]
查看: 59|回复: 0

2万

主题

2万

帖子

7万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
70839
发表于 2020-1-17 02:10 | 显示全部楼层 |阅读模式
什么是 泛型?

示例 1 : 不利用泛型
不利用泛型带来的题目
ADHero(物理进犯好汉) APHero(魔法进犯好汉)都是Hero的子类
ArrayList 默许担任Object典范的工具,所以全数工具都可以放进ArrayList中
所以get(0) 返回的典范是Object
接着,需要举行逼迫转换才可以获得APHero典范大要ADHero典范。
假如软件斥地职员记忆比力好,能记得哪个是哪个,照旧可以的。 可是斥地职员会出毛病,比如第20行,会记错,把第0个工具转换为ADHero,这样就会出现典范转换很是
  1. package generic; import java.util.ArrayList; import charactor.ADHero;import charactor.APHero; public class TestGeneric {     public static void main(String[] args) {                 ArrayList heros = new ArrayList();                 heros.add(new APHero());        heros.add(new ADHero());                 APHero apHero =  (APHero) heros.get(0);        ADHero adHero =  (ADHero) heros.get(1);                 ADHero adHero2 =  (ADHero) heros.get(0);    }}
复制代码
示例 2 : 利用泛型
利用泛型的好处:
泛型的用法是在容器背面增加
Type可所以类,笼统类,接口
泛型表现这类容器,只能寄存APHero,ADHero就放不进去了。
  1. package generic; import java.util.ArrayList; import charactor.APHero; public class TestGeneric {     public static void main(String[] args) {        ArrayList heros = new ArrayList();                 //只要APHero可以放进去            heros.add(new APHero());                 //ADHero甚至放不进去        //heros.add(new ADHero());                 //获得的时候也不需要举行转型,由于取出来必定是APHero        APHero apHero =  heros.get(0);             }}
复制代码
示例 3 : 子类工具
假定容器的泛型是Hero,那末Hero的子类APHero,ADHero都可以放进去
和Hero无关的典范Item照旧放不进去
  1. package generic; import java.util.ArrayList; import property.Item; import charactor.ADHero;import charactor.APHero;import charactor.Hero; public class TestGeneric {     public static void main(String[] args) {        ArrayList heros = new ArrayList();                 //只要作为Hero的子类可以放进去             heros.add(new APHero());        heros.add(new ADHero());                 //和Hero无关的典范Item照旧放不进去        //heros.add(new Item());             }}
复制代码
示例 4 : 泛型的简写
为了不使编译器出现警告,需要前后都利用泛型,像这样:
  1. ArrayList heros = new ArrayList();
复制代码
不外JDK7供给了一个可以稍微淘汰代码量的泛型简写方式
  1. ArrayList heros2 = new ArrayList();
复制代码
背面的泛型可以用来取代
  1. package generic;  import java.util.ArrayList; import charactor.Hero;  public class TestGeneric {      public static void main(String[] args) {        ArrayList heros = new ArrayList();        //背面可以只用        ArrayList heros2 = new ArrayList();             }}
复制代码
免责声明:假如加害了您的权益,请联系站长,我们会实时删除侵权内容,感谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2006-2014 淄博新闻网-淄博日报 淄博晚报 淄博财经新报 掌中淄博 淄博专业新闻资讯发布网站 版权所有 法律顾问:高律师 客服电话:0791-88289918
技术支持:迪恩网络科技公司  Powered by Discuz! X3.2
快速回复 返回顶部 返回列表