位置: 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织梦模板发布文章添加禁用词语过滤功能(织梦使用教程)

  • 分析淘宝店的运营思路(分析淘宝店的运营情况)

    分析淘宝店的运营思路(分析淘宝店的运营情况)

  • vivox70怎么设置侧滑返回(vivox70怎么设置返回键)

    vivox70怎么设置侧滑返回(vivox70怎么设置返回键)

  • 华为手机怎么没有更多连接(华为手机怎么没有耳机插孔)

    华为手机怎么没有更多连接(华为手机怎么没有耳机插孔)

  • iphone11相机怎么调专业模式(iphone11相机怎么拍月亮)

    iphone11相机怎么调专业模式(iphone11相机怎么拍月亮)

  • 淘宝退货了但是又收到货怎么办(淘宝退货了但是东西已经用了)

    淘宝退货了但是又收到货怎么办(淘宝退货了但是东西已经用了)

  • 佳能70200一代二代区别大吗(佳能70200一代二代的区别)

    佳能70200一代二代区别大吗(佳能70200一代二代的区别)

  • 微信交不了医保怎么回事(微信交不了医保怎么办)

    微信交不了医保怎么回事(微信交不了医保怎么办)

  • 手机版wps脚注怎么弄(手机版wps脚注怎么删除)

    手机版wps脚注怎么弄(手机版wps脚注怎么删除)

  • 淘宝你充值过的人是什么意思(淘宝充值中心充值记录能不能删除)

    淘宝你充值过的人是什么意思(淘宝充值中心充值记录能不能删除)

  • 荣耀30 尺寸(荣耀30尺寸是多少)

    荣耀30 尺寸(荣耀30尺寸是多少)

  • 微信以下内容仅对你可见是什么意思(微信以下内容仅对你可见怎么居中)

    微信以下内容仅对你可见是什么意思(微信以下内容仅对你可见怎么居中)

  • 朋友圈删除的内容怎么恢复(朋友圈删除的内容)

    朋友圈删除的内容怎么恢复(朋友圈删除的内容)

  • 微信的图片怎么转发到QQ(微信的图片怎么做成表情包)

    微信的图片怎么转发到QQ(微信的图片怎么做成表情包)

  • 如何让airpods发出滴滴声音(怎样让airpods发出提示音)

    如何让airpods发出滴滴声音(怎样让airpods发出提示音)

  • 非合约机和裸机的区别(手机合约机和非合约机哪个好)

    非合约机和裸机的区别(手机合约机和非合约机哪个好)

  • oppor11语音助手怎么唤醒(oppor11语音助手怎么关闭)

    oppor11语音助手怎么唤醒(oppor11语音助手怎么关闭)

  • ipadair2最大支持多少w(ipadair2最大支持多少w充电)

    ipadair2最大支持多少w(ipadair2最大支持多少w充电)

  • 怎么看qq秘密是谁发的(怎么看qq秘密是什么)

    怎么看qq秘密是谁发的(怎么看qq秘密是什么)

  • qq收到的礼物怎么提现(qq收到的礼物怎么看谁送的)

    qq收到的礼物怎么提现(qq收到的礼物怎么看谁送的)

  • 苹果7p怎么拍照带日期(苹果7p怎么拍照好看)

    苹果7p怎么拍照带日期(苹果7p怎么拍照好看)

  • 红米note7支持27w快充吗(红米note7支持快充吗?)

    红米note7支持27w快充吗(红米note7支持快充吗?)

  • 手机插u盘在哪里打开(手机插u盘在哪里打开vivo)

    手机插u盘在哪里打开(手机插u盘在哪里打开vivo)

  • 在VSCode中配置代码自动 eslint 格式化(修改eslint规则、eslint忽略文件)(vscode配置r)

    在VSCode中配置代码自动 eslint 格式化(修改eslint规则、eslint忽略文件)(vscode配置r)

  • 退回企业所得税的账务处理
  • 一般纳税人开普票和专票有什么区别
  • 用友u8固定资产折旧怎么生成凭证
  • 营业执照三证合一是哪一年开始的
  • 营改增后建筑企业的账务处理
  • 应收账款进行债务转让
  • 即征即退增值税需要缴纳所得税吗
  • 一张报关单上最多不能超过
  • 开具出口发票时免税类型怎么选择?
  • 核定征收的企业需要做账吗
  • 账务不符怎么写
  • 进项税额转出多转了怎么办
  • 公司转账给法人最多可以转多少
  • 不是公户付的款开发票可以做账吗
  • 非全日制劳动用工扣税
  • 长期股权投资损失计入什么科目
  • 无法偿还的借款怎么处理
  • 固定资产出租收入属于其他业务收入吗
  • 信托保证本金吗
  • 公司给员工发放的福利都要扣个税吗
  • 公司内收取的礼金
  • win10系统出现蓝屏恢复
  • 仲裁规则主要包括
  • 生产运维是干什么的
  • 企业注销时还有应付职工薪酬怎么办
  • win10dev预览版
  • 发票章盖的不清楚可以在旁边再盖一个吗
  • 小规模纳税人免税额度是多少
  • 职工福利费用怎么入账
  • PHP/HTML混写的四种方式总结
  • vue鼠标点击事件点击改变效果,再次点击恢复效果
  • java项目中redis使用实例
  • import vue from vue报错
  • nodejs vue
  • php access_token
  • 保税进料加工企业
  • 小微企业普惠性税收减免政策2022
  • 文化事业建设费税收优惠政策2023
  • 库存商品的进销存怎么做账
  • 月末库存商品结转成本怎么算
  • 一般计税方法下自来水公司(一般纳税人)销售自来水
  • 承兑汇票贴现的利率
  • 借款需要缴纳个人所得税吗
  • ubuntu20.04vim
  • sql2008怎么查询
  • 给个体工商户打工受伤怎么办
  • 企业设立账簿
  • 哪些增值税可以免税
  • 实收资本为0可以运作吗?
  • 政府补助的分类及会计处理方法有哪些
  • 税控系统全额抵扣增值税申报
  • 进项转出的原因是什么
  • 房地产开发企业资质管理规定
  • 员工体检费发票怎么入账
  • 进口材料是什么意思
  • 调整后视镜
  • 利用的英文
  • SQLServer中SELECT语句的执行顺序
  • 记一次因线上mysql优化器误判引起慢查询事件
  • windows 10预览版
  • apt-key
  • linux系统垃圾怎么清理
  • freebsd版本选择
  • 方正电脑升级
  • slserv.exe - slserv进程是什么意思
  • 进程 com surrogate
  • hkcmd是什么进程
  • shnlog.exe - shnlog是什么进程 有什么用
  • Win7系统安装教程
  • windows8怎么装
  • JAVAscript操作word
  • unity www读取本地视频文件和外部视频文件 播放视频动画和视频声音
  • jquery上传图片并预览
  • nodejs执行cmd命令
  • shell脚本获取进程pid
  • nodejs怎么实现多线程
  • jquery form序列化
  • jquery中if语句
  • jquery自带的弹出框
  • 地税局 业务
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设