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

  • word打不开发送错误报告怎么办(word打不开 发送错误报告)(word打不开发送指令错误)

    word打不开发送错误报告怎么办(word打不开 发送错误报告)(word打不开发送指令错误)

  • 多多视频怎么搜索别人(多多视频怎么搜索作者)

    多多视频怎么搜索别人(多多视频怎么搜索作者)

  • 微信压缩视频画质怎么办(微信压缩视频画质怎么调)

    微信压缩视频画质怎么办(微信压缩视频画质怎么调)

  • 荣耀30pro如何改yoyo唤醒词(荣耀30pro怎么切换应用)

    荣耀30pro如何改yoyo唤醒词(荣耀30pro怎么切换应用)

  • 快手小店申请退款取消了怎么在申请退款(快手小店申请退款多久才能退款)

    快手小店申请退款取消了怎么在申请退款(快手小店申请退款多久才能退款)

  • 手机qq如何把性别隐藏(怎么用手机把qq性别改成秘密)

    手机qq如何把性别隐藏(怎么用手机把qq性别改成秘密)

  • 小米手环sn码在哪里(小米手环sn码能查出来什么)

    小米手环sn码在哪里(小米手环sn码能查出来什么)

  • 抖音有群发功能吗(抖音群发功能软件)

    抖音有群发功能吗(抖音群发功能软件)

  • 中国移动获取不了验证码(中国移动输入手机号无法获取验证码)

    中国移动获取不了验证码(中国移动输入手机号无法获取验证码)

  • 智慧团建密码忘记而且找不到管理员怎么办(智慧团建密码忘了,但是又找不到管理员)

    智慧团建密码忘记而且找不到管理员怎么办(智慧团建密码忘了,但是又找不到管理员)

  • 苹果电池显示黄颜色怎么关闭(苹果电池显示黄灯)

    苹果电池显示黄颜色怎么关闭(苹果电池显示黄灯)

  • 华为畅享9e支持OTG吗(华为畅享9e支持快充功能吗)

    华为畅享9e支持OTG吗(华为畅享9e支持快充功能吗)

  • 华为mate30pro掉水里怎么办(华为mate30pro掉水里怎么办,瞬间拿出!)

    华为mate30pro掉水里怎么办(华为mate30pro掉水里怎么办,瞬间拿出!)

  • 苹果8重启方法(苹果重启方法怎么设置)

    苹果8重启方法(苹果重启方法怎么设置)

  • 企业微信怎么加入别部门(企业微信怎么加好友最快)

    企业微信怎么加入别部门(企业微信怎么加好友最快)

  • 那种手机有nfc功能(那种手机nfc功能添加门禁卡最好)

    那种手机有nfc功能(那种手机nfc功能添加门禁卡最好)

  • 老年机打电话无法连接(老年机打电话无法连接是什么意思)

    老年机打电话无法连接(老年机打电话无法连接是什么意思)

  • 苹果耳机二代什么时候出(苹果耳机二代什么型号)

    苹果耳机二代什么时候出(苹果耳机二代什么型号)

  • 怎样学好3dmax(怎样学好英语最有效的方法)

    怎样学好3dmax(怎样学好英语最有效的方法)

  • 黄钻能看到隐身访问吗(黄钻能看到隐身访问嘛)

    黄钻能看到隐身访问吗(黄钻能看到隐身访问嘛)

  • 关机了怎么看未接电话(关机了怎么看未接短信)

    关机了怎么看未接电话(关机了怎么看未接短信)

  • qq来消息怎么不显示(qq来消息怎么不显示名字)

    qq来消息怎么不显示(qq来消息怎么不显示名字)

  • 总结帝国CMS下在PHP文件中调用数据库类执行SQL语句实例(帝国cms专题)

    总结帝国CMS下在PHP文件中调用数据库类执行SQL语句实例(帝国cms专题)

  • 北京市增值税发票查验平台
  • 外籍人士如何在中国办理延长签证
  • 跨年增值税发票怎么冲红
  • 交易性金融资产的交易费用计入哪里
  • 银行回单电子退库是什么意思
  • 营业外支出影响利润
  • 银行贷款减值准备转回处理
  • 企业投资可以税后扣除吗
  • 研发费用的社保怎么做
  • 员工宿舍免征房产税
  • 预缴增值税时可抵扣吗
  • 网上平台服务年费应该计入什么费用?
  • 票据占比不得超过各项贷款的
  • 单位注销合并时在原单位各个账户余额保留
  • 上月应交税金
  • 公司工资发放错误怎么退回
  • 律师事务所日常管理松懈混乱整改措施
  • 农产品收购发票使用范围
  • 关于开票时纳税的规定
  • 员工离职赔偿计入什么科目
  • 股权转让未分配利润如何做账
  • 分期消费的实际收益
  • 亏损合同如何处理
  • 工会经费申报表的应税项应该怎样填写
  • 计提固定资产折旧
  • 工商年报中生育保险本期实际缴费金额
  • 工程决算超预算起诉
  • 增加间接费用科目的方法
  • win11dev预览修复工具
  • 垫资计入什么会计科目
  • 先出库还是先发货
  • 前端大屏常用的输入法
  • 最贵的节能灯泡品牌
  • element html
  • 限售股转让个人所得税退税
  • php图片上传插件
  • 公司员工的车加油可以开公司发票吗
  • php 遍历字符串
  • 应收利息会计分局
  • 息税前利润为什么不减利息
  • 已认证的发票
  • 现金流量表企业所得税
  • 深入了解jvm
  • css怎么制作
  • 中药资源与开发跨专业考研
  • 年终汇算清缴所得税计算器
  • 营业外收入汇算清缴时也得计入收入
  • 珠宝首饰可以开发票吗
  • sqlserver2000分页
  • 处理固定资产如何做账
  • 出口货物当月销售当月就要开票吗
  • 银行承兑汇票套利案例
  • 收取的承包费交什么税
  • 当月没认证发票有补救措施吗
  • 现金支票存根联丢失怎么办
  • 存货过期报废进项税额怎么处理
  • 其他应付重分类到其他应收
  • sql server常规错误
  • sql server复制表数据
  • ccs 运行
  • WIN10系统优化技巧
  • window10注册表
  • osk.exe
  • Win7旗舰版系统文件名称
  • WIN10怎么彻底删除works2
  • win8.1连不上wifi
  • cocos2d-js-min.js
  • cocos2d android
  • 分享js粘帖屏幕怎么弄
  • python进行聚类
  • android百分比布局
  • linux下mysql如何自动备份shell脚本
  • javascript教程chm
  • 蛋哥的日常
  • jqueryw3c
  • android activity finish
  • 云南省国家税务局APP
  • 个税申报系统如何增加新单位
  • 天津市国税局网站
  • 大连电子税务局app下载
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设