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

  • 小米watchs1pro如何接电话(小米watchs1pro如何安装应用)

    小米watchs1pro如何接电话(小米watchs1pro如何安装应用)

  • vivo手机一键换机怎么操作(vivo手机一键换机微信聊天记录还有吗)

    vivo手机一键换机怎么操作(vivo手机一键换机微信聊天记录还有吗)

  • 苹果6s可以升级ios14吗(苹果6s可以升级ios15吗)

    苹果6s可以升级ios14吗(苹果6s可以升级ios15吗)

  • ctrl+l是什么快捷键(ctrl+l是什么快捷键pr)

    ctrl+l是什么快捷键(ctrl+l是什么快捷键pr)

  • 从手机号能查出什么信息呢(从手机号能查出抖音号吗)

    从手机号能查出什么信息呢(从手机号能查出抖音号吗)

  • 京东可以改地址么(京东可以改地址吗配送中)

    京东可以改地址么(京东可以改地址吗配送中)

  • loading页面是什么意思 (loading界面什么意思)

    loading页面是什么意思 (loading界面什么意思)

  • 苹果的保修是包括哪些(苹果的保修是包括电池吗)

    苹果的保修是包括哪些(苹果的保修是包括电池吗)

  • 迅雷苹果下载不了吗(迅雷苹果下载不了种子)

    迅雷苹果下载不了吗(迅雷苹果下载不了种子)

  • 华为后面的标签怎么撕(华为后面的标签有什么用)

    华为后面的标签怎么撕(华为后面的标签有什么用)

  • 闲鱼验机中心多久发货(闲鱼验机中心多少钱一次)

    闲鱼验机中心多久发货(闲鱼验机中心多少钱一次)

  • 苹果的云盘是开还是关(苹果云盘什么用)

    苹果的云盘是开还是关(苹果云盘什么用)

  • 激活windows是什么意思(windows激活是什么)

    激活windows是什么意思(windows激活是什么)

  • 抖音审核多久(抖音审核好久)

    抖音审核多久(抖音审核好久)

  • 微信过了2分钟怎么撤回(微信过了2分钟还能撤回)

    微信过了2分钟怎么撤回(微信过了2分钟还能撤回)

  • 未受信用的企业开发者怎么设置(未受信用的企业级开发者 安全吗)

    未受信用的企业开发者怎么设置(未受信用的企业级开发者 安全吗)

  • vivo手机怎么设置sos(vivo手机怎么设置桌面时间日期)

    vivo手机怎么设置sos(vivo手机怎么设置桌面时间日期)

  • 微信地区怎么改圣诞岛(微信地区怎么改成日本我孙子市)

    微信地区怎么改圣诞岛(微信地区怎么改成日本我孙子市)

  • 如何将软件放到桌面(如何将软件放到开始菜单)

    如何将软件放到桌面(如何将软件放到开始菜单)

  • 字体怎么设置(字体怎么设置大一点)

    字体怎么设置(字体怎么设置大一点)

  • 快手怎么开ktv歌房(快手怎么开ktv歌曲)

    快手怎么开ktv歌房(快手怎么开ktv歌曲)

  • cad删除直线中的一段(cad2021删除直线)

    cad删除直线中的一段(cad2021删除直线)

  • ipadpro强制重启(ipadpro强制重启是哪个键)

    ipadpro强制重启(ipadpro强制重启是哪个键)

  • vue中props设置默认值-父组件给子组件传值的写法——简略、带类型、带类型和默认值、带校验(vue props emit)

    vue中props设置默认值-父组件给子组件传值的写法——简略、带类型、带类型和默认值、带校验(vue props emit)

  • phpcms v9是什么(phpcms rce)

    phpcms v9是什么(phpcms rce)

  • linux服务器下phpcms提示hash数据验证失败的解决方法(linux开启php服务)

    linux服务器下phpcms提示hash数据验证失败的解决方法(linux开启php服务)

  • 个人普通发票多少钱
  • 五险一金代缴费
  • 装修款需要开发票吗
  • 简单的记账方法明细表格怎么做
  • 什么时候做计提的会计分录
  • 不超45万是含税还是不含税
  • 工厂宿舍的水电安装规范图
  • 未达起征点可以开专票吗
  • 2019年小规模纳税人增值税优惠
  • 为什么有的发票税率是3%,有的是1%
  • 股权转让如何避免印花税
  • 企业政府性征地补偿款如何合法使用
  • 用友软件销售操作流程
  • 本季度盈利可以当季弥补以前亏损吗
  • 应收账款多记如何调账?
  • 非居民企业的征税范围
  • 购货方非增值税一般纳税人
  • 冲减留抵税额
  • 不征税收入税屋
  • 计提城市建设维护税
  • 报销款冲抵其他应收款怎么做账?
  • 高新企业产品开发的折旧费用可以税前扣除吗?
  • 建筑企业无票支出如何处理
  • 销售折让怎么处理
  • 子公司注销如何做账
  • 税后2.5万工资税前多少钱
  • 税务专用发票
  • 车辆保险返点计算器
  • 个税三险一金指什么意思
  • win10系统关机后自动开机怎么办
  • rrpcsb.exe - rrpcsb是什么进程 有什么用
  • 借条无还款时间怎么办
  • win10excel闪退是什么原因
  • element ui datepicker 源码
  • 收到退款发票的分录
  • 超市收取进场费会计分录
  • 银行代发工资会计科目怎么写
  • 稿酬所得怎么交所得税
  • 奥卡拉国家森林公园
  • php面向对象优点,缺点
  • 绿化管理服务经营范围
  • Pytorch深度学习实战3-6:详解网络骨架模块nn.Module(附实例)
  • vim8.2插件
  • 帝国cms添加栏目前台不显示
  • vue 同局域网访问不到的问题及解决
  • 电脑自学网
  • 有收入就要结转成本吗为什么
  • 加计扣除所得税处理
  • 家具工厂生产
  • 用人单位垫付生育津贴垫付金额和垫付天数
  • 试分析营改增的重大意义
  • 外经证预缴的附加税税率
  • 免税收入就是不征收收入,均属于税收优惠范畴
  • 折扣的种类有哪几种
  • 外聘老师的费用如何做账
  • 公司法人借款给企业属于关联交易吗?
  • 会计复式记账法题目
  • 银行信贷人员岗位职责
  • 建账前应考虑什么问题
  • Win10 64位系统下鼠标右键刷新没反应的解决方案
  • 在64位的Ubuntu系统上安装32位的WPS的方法
  • 使用u盘安装win10
  • 因为你的策略组阻止
  • windows7怎么说
  • xp系统如何查看系统配置
  • win7 esd安装文件怎么安装教程
  • 如何更改忘记密码中的问题
  • perl-v
  • Unity3D游戏开发标准教程
  • unity寻路系统
  • python怎么用命令行
  • javascript数据类型有哪些
  • 关于android工程中的assets目录的正确说法
  • linux怎么ssh远程
  • javascript图片切换代码
  • jquery iframe
  • 信息报送条例
  • 山东省合格考密码
  • 深圳市百旺信投资有限责任公司
  • 眉山市两会2021
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设