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

  • 首页网页设计值得信赖的网站通过观察一个建站公司的官网

    首页网页设计值得信赖的网站通过观察一个建站公司的官网

  • qq怎么设置不常用联系人(qq怎么设置不常用群)

    qq怎么设置不常用联系人(qq怎么设置不常用群)

  • 抖音把粉丝移除了通知吗(抖音把粉丝移除了对方还能加回来吗)

    抖音把粉丝移除了通知吗(抖音把粉丝移除了对方还能加回来吗)

  • 电脑版芒果tv怎么下载(电脑版芒果TV怎么开弹幕)

    电脑版芒果tv怎么下载(电脑版芒果TV怎么开弹幕)

  • 京东咚咚红包是什么(京东咚咚红包是真的吗)

    京东咚咚红包是什么(京东咚咚红包是真的吗)

  • 苹果8怎么挂电话拒接(苹果怎么挂电话只有接听)

    苹果8怎么挂电话拒接(苹果怎么挂电话只有接听)

  • 微信红包不点开怎么看金额(微信红包不点开知道有多少钱吗)

    微信红包不点开怎么看金额(微信红包不点开知道有多少钱吗)

  • 17-40镜头适合哪些场景(17-40镜头效果)

    17-40镜头适合哪些场景(17-40镜头效果)

  • 荣耀旗舰机是哪个系列(荣耀旗舰机是哪款)

    荣耀旗舰机是哪个系列(荣耀旗舰机是哪款)

  • qq群宣传委员怎么获得(qq群宣传委员头衔怎么分享了没有)

    qq群宣传委员怎么获得(qq群宣传委员头衔怎么分享了没有)

  • 华为p40谷歌服务怎么安装(华为p40谷歌服务怎么关闭)

    华为p40谷歌服务怎么安装(华为p40谷歌服务怎么关闭)

  • 海航通信是什么手机卡(海航通信属于)

    海航通信是什么手机卡(海航通信属于)

  • 苹果6改密码在哪里修改(苹果6更改密码)

    苹果6改密码在哪里修改(苹果6更改密码)

  • 长横线 怎么打(键盘长横线怎么打)

    长横线 怎么打(键盘长横线怎么打)

  • 苹果11怎么关闭程序(苹果11怎么关闭打开的软件)

    苹果11怎么关闭程序(苹果11怎么关闭打开的软件)

  • 淘宝二手app叫什么(淘宝二手交易软件)

    淘宝二手app叫什么(淘宝二手交易软件)

  • 哈罗顺风车预付车费如何取消订单(哈罗顺风车预付车费能退吗)

    哈罗顺风车预付车费如何取消订单(哈罗顺风车预付车费能退吗)

  • 淘宝怎么加入店铺群(淘宝怎么加入店铺会员)

    淘宝怎么加入店铺群(淘宝怎么加入店铺会员)

  • ui界面设计用什么软件(ui界面设计用什么电脑好)

    ui界面设计用什么软件(ui界面设计用什么电脑好)

  • 微信怎么搜索附近群(微信怎么搜索附近的女生)

    微信怎么搜索附近群(微信怎么搜索附近的女生)

  • 天猫精灵怎么连接电视(天猫精灵怎么连Qq音乐)

    天猫精灵怎么连接电视(天猫精灵怎么连Qq音乐)

  • 华为p30充电功率(华为p30充电效率)

    华为p30充电功率(华为p30充电效率)

  • Win7无法使用Aero主题(win7无法使用管理员权限)

    Win7无法使用Aero主题(win7无法使用管理员权限)

  • win10锁屏聚焦功能不更新教程(win10锁屏界面windows聚焦什么意思)

    win10锁屏聚焦功能不更新教程(win10锁屏界面windows聚焦什么意思)

  • 缴纳个人所得税还算应届毕业生吗
  • 增值税认证勾选平台
  • 增值税价外税是什么税种
  • 公司股东分红要交哪些税
  • 车间购买灯会计怎么做账
  • 土地投资入股是否需要发票作为企业所得税税前扣除凭证
  • 未支付商标使用费怎么办
  • 车辆购置税发票电子版怎么查
  • 小规模纳税人费用发票怎么做账
  • 存货呆滞是什么意思
  • 利税总额计算公式表
  • 外出采购材料分录
  • 内部部门汇缴上级财务
  • 股东以股抵债是否合法
  • 广告公司固定资产有哪些?
  • 中央下拨党费
  • 国际工程物资采购网
  • 发票密码区是干啥的
  • 暂估入账冲回
  • 公司的现金管理规定
  • 王者荣耀中甄姬的cp是谁
  • 工会经费申报的依据
  • uniapp异常处理
  • XP系统,右下角本地连接图标消失的解决办法
  • 公司资产总额怎么算的啊
  • 观察者模式 mvc
  • u盘格式化技巧
  • php生成随机字符串源,且不会重复出现
  • 分析卡拉哈迪沙漠的形成原因
  • chrome插件扩展名
  • 增值税发票与实际差异五毛钱
  • 自有房子出租怎么做账
  • 房地产企业以房产对外投资需要交什么税
  • 定额发票累计领用金额怎么填
  • vue3生命周期及使用
  • typescript完全解读
  • 数据分析实战
  • 委托代销商品委托方和受托方会计分录
  • Python怎么把数据倒着输出
  • 外地工程预缴税款怎么入账啊
  • 哪些合同必须签订书面合同
  • db2udb
  • 转回存货跌价准备的会计分录
  • 工业企业取得土地收益
  • 劳动合同没有齐缝章
  • 境外运费支付属什么费用
  • 去年多计提的企业所得税怎么调整
  • 医院工会费是什么
  • 纳税调整收入包括哪些
  • 受托开发软件一般做什么
  • 什么是现金等价物
  • 存货跌价准备怎么结转成本
  • 全面解析皮炎
  • 增强型图形文件
  • win7开关机时间设置
  • win10建行网银盾插上网页弹不出来
  • xp系统运行怎么打开
  • win8删除所有内容并重新安装windows
  • win10账户登录闪退
  • 微软 系统设计
  • jquery animate源码
  • android中使用md5后报非法延续字节
  • nodejs writefile
  • 不要使用CSS Expression的原因分析
  • nodejs搭建本地服务器运行html
  • javascript怎么学
  • 怎么快速启动win10
  • 树的python
  • JavaScript数据类型分为哪两大类
  • jquery easyui有哪些特点
  • javascript怎么样
  • 树形菜单html
  • 重庆税务电子税务
  • 国家税务总局开票系统怎么开票
  • 江西省电子税务局登录入口
  • 南通税务网站
  • 国家税务总局四川省电子税务局界面
  • 江苏 税务局
  • 法国进囗红酒
  • 哪些账本需要贴纸
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设