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

  • 留抵税额退税怎么做账
  • 企业自建房屋
  • 带薪休假会计
  • 关税的计算公式是什么
  • 研发人员差旅费可以资本化吗
  • 实收资本可以做借方吗
  • 企业所得税预缴后亏损
  • 营业收入管理也是企业财务管理的基本内容
  • 资产已报废折旧怎么计算
  • 仲裁费用计入什么会计科目
  • 酒店业小规模纳税人可以享受2023年应纳税额抵减政策吗
  • 工业企业哪些房子要交房产税
  • 租赁类专票不含增值税吗
  • 逃避缴纳税款征管法第几条
  • 预缴和实际应付的区别
  • 分配利润账务处理
  • 代理运费进项税额抵扣
  • 股东房产用于公司经营的是否交房产税
  • 注册资金印花税怎么算
  • win11 insider preview怎么升级正式版
  • linux内核有什么作用
  • 微软输入法打不出汉字
  • 进项税额转出是负数是什么意思
  • 财务决算报表是谁编制的
  • linux检测
  • 在php中,字符串有哪些表示形式
  • PHP:session_encode()的用法_Session函数
  • php判断两个给定值相同
  • 应收款抹零
  • 长期挂账的其他应付款转营业外收入情况说明
  • 货物运输业的增值税税率
  • joomla安装教程
  • php字符串转换
  • js正则用法
  • 增值税发票认证结果通知书在哪里打印
  • phpcms添加内容
  • 帝国cms视频教程
  • 滞纳金是
  • 什么是备抵类账户
  • 接受投资者投入的无形资产其入账价值是
  • 银行存款产生的利息收入
  • 货物样品出口
  • 增值税可以减免吗
  • 企业委托企业
  • 以股权投资入股新公司税务处理
  • 小规模企业收到普通发票如何做账
  • 公司车辆交强险怎么网上买
  • 计提工资申报个税
  • 快递费用是否可以开发票
  • 转账支票办理收款所要拿的单证
  • 当月发票已认证还能作废吗
  • 为什么要提前计划
  • 生产成本如何设置明细账
  • 明细分类账的记账
  • xp系统打开软件慢怎么解决
  • win2000蓝屏0x0000007b
  • winrecon.exe - winrecon是什么进程
  • linux命令速记
  • win10任务栏不显示输入法
  • freebsd安装教程
  • cocos2d教程
  • 微信小程序自动跳转怎么关闭
  • three.js怎么用
  • cmd常用命令详解
  • css+div布局的常用方法
  • js中的filter方法
  • jquery设计模式
  • linux中切换目录命令符
  • css 定位
  • centos7如何分区
  • nodejs10支持es6吗
  • Android--VideoPlay--视频播放器
  • js function.call
  • unity loom插件
  • 湘医保缴费怎么网上缴费
  • 税务稽查操作规范
  • 科技公司小规模纳税人
  • 委托人全权代理
  • 怎么登陆国税网
  • 哈尔滨地税局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设