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

  • 企业所得税税前扣除管理办法
  • 个人免征税额
  • 单位如何代个人交社保
  • 向银行借款存入银行会引起
  • 销项税额和进项税额月底怎么结转
  • 增值税专票开户行
  • 个人社保信息变更
  • 公司名称变更在哪个网站
  • 软件销售利润
  • 信用减值损失借贷方表示什么意思
  • 甲供材能否开具增值税专用发票
  • 建筑业会计科目工程结算
  • 金税三期实收资本的印花税在哪缴?
  • 投资性房地产租赁期开始日
  • 跨年了可以补去年的养老吗
  • 销售依据
  • 会务费发票要附上照片吗
  • 个体户上季度未申报能补报吗
  • 纳税人是非开业户是什么意思
  • 附加税减半征收计提和缴纳的会计分录
  • 购买软件会计账务处理
  • 公司营业收入证明怎么开
  • 金融企业哪些呆账损失可以在税前扣除?
  • 应付利息和应计利息怎么区分
  • 支付银行借款利息可以全额扣除吗
  • PHP:JDToFrench()的用法_日历函数
  • redistemplate获取value
  • 企业之间可以背书吗
  • 生产企业可以抵扣进项税的
  • 建筑工程增值税怎么算
  • php实现邮箱验证码
  • 其他权益工具投资公允价值变动计入什么科目
  • tomcat-juli
  • node.js解决跨域请求
  • calc下载
  • 买汽车配件属于什么服务
  • 房地产企业的开发成本和开发费用有什么区
  • 代扣税费分录
  • 织梦cms官网
  • 补发去年工资会被扣税吗
  • 什么是外勤会计制度
  • 公司注销持股1%的股东需要他签字吗
  • 应付劳务费怎么做账
  • mysql创建临时表并赋值
  • 本月销售商品会计分录
  • 处理废旧材料会计分录
  • 事业单位会计的特点
  • 不能抵扣的普通发票如何做分录
  • 非现金资产抵偿债务
  • 待摊费用在新会计准则里面有吗
  • 工程发票可以作废吗
  • MySQL replace into 语句浅析(二)
  • sql server启动不了 错误2
  • mysql总是安装失败
  • xp系统安装版如何安装
  • wdcp的/www目录大小调整或增加分区/硬盘的方法
  • win7无法运行
  • linux中sed
  • centos安装位置选择
  • 双系统没有选择
  • Linux下使用quota命令管理磁盘空间的实例教程
  • 笔记本w8系统怎么取消开机密码
  • win10脱机使用
  • linux 11
  • unity开发的小游戏
  • JavaScript splice()方法详解
  • jquery设置鼠标样式
  • nodejs mongoose
  • 批处理注册reg文件
  • android 字体设置
  • angularjs4
  • jQuery插件ajaxFileUpload异步上传文件
  • javascript toggle
  • 时间戳的差值
  • [置顶] [Android Studio 权威教程]Android Studio 三种添加插件的方式
  • 火狐浏览器不支持弹出对话框操作
  • 国家电子税务总局重庆电子税务局
  • 豫事办登录时密码叫重置什么原因
  • 甘肃省国家税务局
  • 车辆购置税非本人可以代缴吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设