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

  • 纯外贸出口企业出售固定
  • 发票货物名称前带星号规定
  • 原材料盘亏自然损耗
  • 什么叫残保金减免
  • 建筑施工企业会计制度
  • 股东溢价转让股份交易市场会计分录
  • 有形动产租赁服务
  • 员工向公司借的备用金到年底未还清
  • 商场返现活动怎么入账
  • 以土地出资土地增值税
  • 收到应收的货款的会计分录
  • 酒店代金券使用规则
  • 以前年度损益是所有者权益吗
  • 购买货物待销售会计分录
  • 企业购买机械设备是否需要进行过户登记
  • 增值税普票未上传怎么办
  • 现金日记账对方科目是什么意思
  • 股东放弃债权账务处理
  • 分包利润是多少
  • win10开机会自动打开网页
  • win7为什么不能安装软件
  • 股东认缴和实缴不一致
  • 如何在win7系统中查看电脑基本信息
  • 用ghost装win10
  • php随机ua
  • 招待客户住宿的句子
  • 王者营地怎么转移到安卓系统
  • 厂房拆迁补偿多少钱一平
  • php odbc
  • 公司员工意外险,死亡能赔多少钱
  • 抵债资产的账务处理
  • 法恩达尔的信
  • anaconda更改虚拟环境路径
  • 微信支付的开发公司
  • 固定资产到期日
  • 增值税简易计税方法适用范围
  • 小规模纳税人出租不动产税率是5%还是3%
  • 小规模年销售额500万界定标准
  • 销项负数发票需不需要增加库存
  • mongodb运行
  • centos8 mongodb
  • 小规模申请一般纳税人怎么申请
  • 销售费用福利费和管理费用福利费
  • 税务申报核定销售额在哪填写
  • 应收账款余额百分比法怎么算
  • 财务报告与财务思维
  • java连接mysql数据库
  • 收到员工交来的宿舍费
  • 国债逆回购收益什么时候到账
  • 关于出售使用过的产品
  • 驾校挂靠车辆账务处理是?
  • 研发支出全部资本化能不能评高企
  • 公司收到赔偿款要交增值税吗
  • 主营业务成本怎么结转本年利润
  • sql的常用函数
  • sql语句训练题及答案
  • Mysql 5.7.9 shutdown 语法实例详解
  • solaris开放指定端口
  • ubuntu18.04更新到20.04
  • vmware虚拟机不能用桥接模式
  • win7任务管理器是灰色的
  • Win10桌面图标怎么隐藏
  • vsftpd 550错误
  • linux怎么删除文本文件
  • win8系统截图工具快捷键
  • 体验Win8灵活分屏贴靠功能图文介绍
  • sendmail邮件服务器
  • linux chakan
  • Linux安装完mysql后提示错误无法登陆mysql怎么办?
  • drawcalls2000多
  • javascript中的函数也称为什么
  • js跨域请求有哪些方式
  • 全面解析皮炎
  • iframe例子
  • jquery event
  • python 异常处理方法
  • 珠宝消费税怎么征收
  • 河北省国家税务局长简介
  • 税务局党支部党员大会会议记录
  • 代理记账和代理的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设