位置: IT常识 - 正文

day28--Java泛型01

编辑:rootadmin
Java泛型01 1.泛型的理解和好处 看一个需求: 请编写程序,在ArrayList中添加三个Dog对象 Dog对象含有name和age,并输出name和age(要求使用getXXX()) 先用传统的方法来解决 >引出泛型 传统的方法: package li.generic; import jav ... Java泛型011.泛型的理解和好处

推荐整理分享day28--Java泛型01,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

看一个需求:

请编写程序,在ArrayList中添加三个Dog对象Dog对象含有name和age,并输出name和age(要求使用getXXX())

先用传统的方法来解决--->引出泛型

传统的方法:

package li.generic;import java.util.ArrayList;@SuppressWarnings("all")public class Introduce_ { public static void main(String[] args) { //用传统的方法来解决 ArrayList arrayList = new ArrayList(); arrayList.add(new Dog("旺财",10)); arrayList.add(new Dog("发财",1)); arrayList.add(new Dog("小黄",5)); for (Object o:arrayList) { //向下转型 Dog dog = (Dog) o; System.out.println(dog.getName()+"-"+dog.getAge()); } }}class Dog { private String name; private int age; public Dog(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}//假设,我们的程序员不小心添加了一只猫arrayList.add(new Cat("招财猫",8));

那么 在使用增强for循环输出的时候向下转型时就会抛出异常:类型转换错误

使用传统方法问题的分析:

不能对加入到集合ArrayList中的数据进行约束(不安全)遍历的时候,需要进行类型转换,如果集合中的数据量较大,对效率有影响

使用泛型来解决问题:

package li.generic;import java.util.ArrayList;@SuppressWarnings("all")public class Introduce_ { public static void main(String[] args) { //使用泛型 // 1. 当我们这样写的时候:ArrayList<Dog> 表示集合ArrayList中的元素是Dog类型 // 2. 如果编译器发现添加的类型不满足要求,就会报错 // 3.在遍历的时候,可以直接取出Dog类型而不是Object ArrayList<Dog> arrayList = new ArrayList<Dog>(); arrayList.add(new Dog("旺财",10)); arrayList.add(new Dog("发财",1)); arrayList.add(new Dog("小黄",5)); //假设,我们的程序员不小心添加了一只猫,就会报错 // arrayList.add(new Cat("招财猫",8)); System.out.println("====使用泛型===="); for (Dog dog:arrayList) { System.out.println(dog.getName()+"-"+dog.getAge()); } }}class Dog { private String name; private int age; public Dog(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}class Cat { private String name; private int age; public Cat(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}package li.generic;import java.util.ArrayList;@SuppressWarnings("all")public class Introduce_ { public static void main(String[] args) { //使用泛型 // 1. 当我们这样写的时候:ArrayList<Dog> 表示集合ArrayList中的元素是Dog类型 // 2. 如果编译器发现添加的类型不满足要求,就会报错 // 3.在遍历的时候,可以直接取出Dog类型,而不是Object ArrayList<Dog> arrayList = new ArrayList<Dog>(); arrayList.add(new Dog("旺财",10)); arrayList.add(new Dog("发财",1)); arrayList.add(new Dog("小黄",5)); //假设,我们的程序员不小心添加了一只猫,就会报错 // arrayList.add(new Cat("招财猫",8)); System.out.println("====使用泛型===="); for (Dog dog:arrayList) { System.out.println(dog.getName()+"-"+dog.getAge()); } }}class Dog { private String name; private int age; public Dog(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}class Cat { private String name; private int age; public Cat(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; }}day28--Java泛型01

泛型的好处:

编译时,检查添加元素的类型,提高了安全型

减少了类型转换的次数,提高效率

如上面例子所示:不使用泛型的时候,Dog对象放到ArrayList里会先转成Object类型,在取出的时候还要再转换成Dog类型(Dog--加入-->Object--取出-->Dog)

使用了泛型,则放入和取出时都不需要类型转换,提高效率(Dog-->-Dog-->Dog)

不再提示编译警告

不添加@SuppressWarnings("all")编译器也不再警告

2.泛型介绍

泛型是一种可以表示数据类型的 数据类型

如下图:public class ArrayList<E>{} E 称为泛型

泛(广泛)型(类型)===>integer,String,Dog,……

泛型又称参数化类型,是jdk5.0出现的新特性,解决数据类型的安全性问题在类
本文链接地址:https://www.jiuchutong.com/zhishi/310431.html 转载请保留说明!

上一篇:phpcms后台登录验证码显示不出来(phpcms v9用户手册)

下一篇:为dedecms织梦模板发布文章添加禁用词语过滤功能(织梦使用教程)

  • 非居民个人利息所得个税税率
  • 带薪休假会计
  • 培训个人所得税计算
  • 怎么收购股份公司
  • 新个税年终奖计算公式
  • 养猪场死猪处理方法
  • 佣金开什么发票内容
  • 持续经营净利润率怎么算
  • 业务往来说明范本
  • 利润表本期金额怎么算
  • 纳税申报的具体流程个体户
  • 长期挂账应收账款怎么调
  • 小规模代扣代缴个税会计分录
  • 价内税包括
  • 国税发2005 9号 税屋
  • 定期存款要交利息税吗
  • 折旧计算所得税吗
  • 自产房产部分出租后的房产税怎么交?
  • linux中!
  • 企业购入用于捐赠的物品
  • 年折旧率怎么计算折旧几年
  • php数组函数,选班长
  • 查账补缴的税的账怎么做
  • win10更新错误0x8000402
  • atikdag.sys
  • 运输行业增值税税负率是多少
  • 债券投资账务处理例题
  • 未分配利润进行利润分配分录
  • 公司给其他单位分红需要对方开票吗
  • 软件企业高新技术有哪些
  • call for conference paper
  • php如何生成html
  • 汽车客运补充车道标志
  • 固定资产备抵科目怎么填
  • 购车的进项税怎么抵扣
  • 爱丽丝小镇在哪
  • php文档系统
  • token验证器
  • php+ mysql教程
  • 原生js获取document
  • 【第二趴】uni-app开发工具(手把手带你安装HBuilderX、搭建第一个多端项目初体验)
  • 图像处理入门
  • 货真价实的话
  • thinkphp5微信公众号开发
  • linux php redis扩展
  • 软件企业高新技术产品证明材料
  • 缴纳印花税的会计凭证怎么做
  • 其他业务收入与营业外收入
  • 现代服务包括哪些内容是什么
  • 印花税的申报表怎么打印
  • 建筑行业旧项目怎么处理
  • 增值税预缴的计税依据
  • 在建工程里面的费用最后怎样结转
  • 公司购买的车辆折旧年限
  • 生产配合销售还是销售配合生产
  • 市场营销策划开票品目
  • 预收物业费预收什么意思
  • 现汇账户和现钞账户
  • 服务企业的建账方案
  • 如何处理记账凭证
  • 安装sql server 2008硬件要求
  • mysql mod
  • Win7系统关闭怎么办
  • unix系统命令大全
  • 如何解决孩子多动
  • Win10 Mobile/PC RS2快速预览版14926同步推送
  • win8计算机管理员权限
  • linux 开启snmp
  • win7系统和win8系统哪个好用
  • javascript的理解
  • javascript中对象一般由什么组成
  • bootstrap滚动监听效果
  • 深入解读我本是高山
  • Android---43---Service之IntentService
  • unity投影交互开发
  • 最简单的十个菜
  • 代收代付税务条件
  • 五联发票每一联的作用
  • 北京市地税局电话是多少
  • 个人的车租给公司保险可以入账吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设