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

  • 安陆网页设计模板制作企业网站:如果选择使用网站模板制作企业网站

    安陆网页设计模板制作企业网站:如果选择使用网站模板制作企业网站

  • 群主号丢了怎么换群主(群主丢了怎么高情商回复)

    群主号丢了怎么换群主(群主丢了怎么高情商回复)

  • 怎么下载淘宝主图视频(怎么下载淘宝主图详情图)

    怎么下载淘宝主图视频(怎么下载淘宝主图详情图)

  • 小米9微信视频通话不能美颜(小米9微信视频对方听不到声音)

    小米9微信视频通话不能美颜(小米9微信视频对方听不到声音)

  • 华为延时摄影能拍多久(华为延时摄影能拍多久的视频)

    华为延时摄影能拍多久(华为延时摄影能拍多久的视频)

  • icloud照片正在上传都没动(icloud照片正在上传什么意思)

    icloud照片正在上传都没动(icloud照片正在上传什么意思)

  • 需要用户干预 打印机是什么问题(网络打印机提示需要用户干预)

    需要用户干预 打印机是什么问题(网络打印机提示需要用户干预)

  • qq校园扩列为什么会匹配失败(我qq的校园扩列怎么没有了)

    qq校园扩列为什么会匹配失败(我qq的校园扩列怎么没有了)

  • 删除页眉后为什么还有一横(删除页眉后为什么没有了)

    删除页眉后为什么还有一横(删除页眉后为什么没有了)

  • 电话对方忙线中什么意思(电话对方忙线中怎么设置)

    电话对方忙线中什么意思(电话对方忙线中怎么设置)

  • 苹果11锁屏键没有弹力了(苹果11锁屏键没反应是什么原因)

    苹果11锁屏键没有弹力了(苹果11锁屏键没反应是什么原因)

  • 小米9换屏后指纹不能用了(小米9换屏后指纹不能用了是哪里出现问题了)

    小米9换屏后指纹不能用了(小米9换屏后指纹不能用了是哪里出现问题了)

  • 苹果手机半屏有什么用(iphone屏幕半屏)

    苹果手机半屏有什么用(iphone屏幕半屏)

  • 抖音不关注对方可以艾特吗(抖音不关注对方了,对方还能发给我吗)

    抖音不关注对方可以艾特吗(抖音不关注对方了,对方还能发给我吗)

  • 路由器亮红灯上不去网(路由器亮红灯上不了网光猫正常怎么解决)

    路由器亮红灯上不去网(路由器亮红灯上不了网光猫正常怎么解决)

  • vivox27视频美颜怎么没了(vivox27视频美颜怎么关闭)

    vivox27视频美颜怎么没了(vivox27视频美颜怎么关闭)

  • sdm439是什么处理器(sdm450是什么处理器)

    sdm439是什么处理器(sdm450是什么处理器)

  • 华为商城支持什么付款(华为商城支持什么支付)

    华为商城支持什么付款(华为商城支持什么支付)

  • 华为畅享9设置隐藏应用(华为畅享9设置菜单在哪里)

    华为畅享9设置隐藏应用(华为畅享9设置菜单在哪里)

  • oppoa11x怎么添加桌面插件(oppo如何添加)

    oppoa11x怎么添加桌面插件(oppo如何添加)

  • mate30前置摄像头几个(mate30前置摄像头模糊)

    mate30前置摄像头几个(mate30前置摄像头模糊)

  • 抖音私信有已读功能吗(抖音私信已读撤回)

    抖音私信有已读功能吗(抖音私信已读撤回)

  • iphone11屏幕分辨率低(iphone11屏幕分辨率为什么那么低)

    iphone11屏幕分辨率低(iphone11屏幕分辨率为什么那么低)

  • 苹果6s能不能用airpods(苹果6s能不能用airpods pro)

    苹果6s能不能用airpods(苹果6s能不能用airpods pro)

  • 平板cellular版的意思(平板电脑cellular版是什么意思)

    平板cellular版的意思(平板电脑cellular版是什么意思)

  • imessge信息花钱吗

    imessge信息花钱吗

  • 退的个税手续费怎么做会计分录
  • 娱乐行业缴纳的税收
  • 预包装食品销售流程图
  • 运输途中的合理损耗
  • 预缴所得税年底怎么结转
  • 年终奖可以不计入年总收入吗
  • 获取发票信息异常
  • 叉车上牌流程需要多少时间
  • 对公账户取现金有限制吗
  • 合同印花税申报表怎么填写
  • 资产损失申报扣除
  • 向农户购买农产品如何入账
  • 天猫开发票需要确认收货吗?
  • 监控设备的维修保养
  • 280服务费抵税分录
  • 技术转让所得减去成本吗
  • 董事费监事费高管薪酬标准
  • 计提本季度所得税会计分录
  • 消费型增值税的特点的是( )
  • 员工转入子公司怎么做账
  • 换货的手续费走哪个科目
  • 小规模纳税人可以开专票吗
  • i5 8500装win10
  • 小规模纳税人开票额度
  • win11安装失败无法开机
  • cmd telnet命令大全
  • mac符号在哪里
  • 长期资本负债率怎么计算公式
  • 委外加工的加工费的会计处理
  • phpcookie
  • 电力系统常用的接线有哪几种
  • php制作简单的表单代码
  • php找零
  • box-sizing:border-box的理解和作用
  • 出口销售折扣怎么处理
  • 期末汇兑损益计算公式
  • 哪些可以计入研发费用
  • 工程款发票的数量和单价
  • dedecms采集怎么用
  • 企业所得税费用怎么算2023年
  • 印花税的税率变动
  • 长期待摊费用的摊销方法
  • 一次性取得租赁合同
  • 中小型企业营业额和从业人数
  • 小规模纳税人季报需要报什么
  • 合并报表抵消分录的基本原理
  • 个人社保应不应该缴纳
  • 常见的防暑降温药有
  • 资本公积怎么计提
  • 销售折让的红字信息申请表怎么做
  • 用人单位劳务派遣人员工资怎么做账
  • 银行手续费在现金流量表怎么填
  • 本期已认证且不抵扣怎么申报
  • 库存商品属于资产类科目吗
  • 建筑行业总产值占我国GDP的比重
  • 事业单位小规模纳税人咨询服务的税率
  • 固定资产盘点表excel
  • sqlserver2000数据库安装教程
  • windows下mysql安装配置教程
  • mysql字段名可以用中文吗
  • mysql5.5解压版安装教程
  • 苹果电脑安全性
  • centos6开机启动服务
  • windows10mobile官网
  • alg.exe是什么程序
  • rtmanager.exe - rtmanager是什么进程 有什么用
  • Win7系统怎么打开设置
  • win10关闭metro界面
  • win7只能上qq不能上网页
  • ubuntu20安装unity桌面
  • js判断div是否有滚动条
  • java的匿名内部类
  • jqgrid api中文手册
  • Node.js中的包管理工具是什么
  • unity每帧调用
  • 国家税务稽查局举报中心
  • 大连税务局王局长
  • 山东社保费缴纳多少
  • 可以在企业所得税税前扣除的税金
  • 会计的各种税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设