位置: IT常识 - 正文

day28--Java泛型01

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

  • 小米无线充电宝和青春版区别(小米无线充电宝10000mAh)

    小米无线充电宝和青春版区别(小米无线充电宝10000mAh)

  • 抖音复制别人的视频怎么去掉抖音号(抖音复制别人的视频怎么去掉水印)

    抖音复制别人的视频怎么去掉抖音号(抖音复制别人的视频怎么去掉水印)

  • 公域流量和私域流量是什么意思(公域流量和私域流量的思维导图)

    公域流量和私域流量是什么意思(公域流量和私域流量的思维导图)

  • 拼多多可以qq支付吗(拼多多qq支付退款能到微信上吗)

    拼多多可以qq支付吗(拼多多qq支付退款能到微信上吗)

  • 钉钉群被禁言了怎么发送消息(钉钉群被禁言了,怎么上传照片)

    钉钉群被禁言了怎么发送消息(钉钉群被禁言了,怎么上传照片)

  • qq忙碌是什么状态(qq忙碌后对方显示什么)

    qq忙碌是什么状态(qq忙碌后对方显示什么)

  • 卡贴机可以升级13.4系统吗(卡贴机可以升级内存吗)

    卡贴机可以升级13.4系统吗(卡贴机可以升级内存吗)

  • 机顶盒是猫吗(机顶盒是不是猫)

    机顶盒是猫吗(机顶盒是不是猫)

  • 通话黑屏怎么关闭(通话黑屏怎么关闭OPPO)

    通话黑屏怎么关闭(通话黑屏怎么关闭OPPO)

  • 怎么下载歌曲到u盘(怎么下载歌曲到u盘是mp3格式)

    怎么下载歌曲到u盘(怎么下载歌曲到u盘是mp3格式)

  • 安卓手机白屏怎么快速修复(安卓手机白屏怎么恢复)

    安卓手机白屏怎么快速修复(安卓手机白屏怎么恢复)

  • 笔记本1tb机械什么意思(笔记本1t机械硬盘哪个牌子好)

    笔记本1tb机械什么意思(笔记本1t机械硬盘哪个牌子好)

  • ipad五代是哪一年出的(ipad五代是哪一款)

    ipad五代是哪一年出的(ipad五代是哪一款)

  • 小爱音箱一直插着耗电吗(小爱音箱一直插着电源有危害吗)

    小爱音箱一直插着耗电吗(小爱音箱一直插着电源有危害吗)

  • 手机充电多少瓦(一加手机充电多少瓦)

    手机充电多少瓦(一加手机充电多少瓦)

  • v1836a是什么手机型号(型号v1832a是什么手机)

    v1836a是什么手机型号(型号v1832a是什么手机)

  • nova3i是否支持nfc(nova3支不支持nfc)

    nova3i是否支持nfc(nova3支不支持nfc)

  • 苹果11怎么隐藏刘海(苹果11怎么隐藏软件不被发现)

    苹果11怎么隐藏刘海(苹果11怎么隐藏软件不被发现)

  • vivo怎么把软件移到sd卡(vivo怎么把软件移到另一个手机上)

    vivo怎么把软件移到sd卡(vivo怎么把软件移到另一个手机上)

  • 打电话用视频扣话费吗(打电话视频扣流量吗)

    打电话用视频扣话费吗(打电话视频扣流量吗)

  • 苹果6plus找不到录屏(苹果6plus找不到更新包怎么回事)

    苹果6plus找不到录屏(苹果6plus找不到更新包怎么回事)

  • a1778是全网通吗(苹果a1784是全网吗)

    a1778是全网通吗(苹果a1784是全网吗)

  • 因特网的接入方式(因特网的接入方式有哪几种)

    因特网的接入方式(因特网的接入方式有哪几种)

  • ecshop能免费使用吗(ecshop app)

    ecshop能免费使用吗(ecshop app)

  • microsoft.exe进程查询 microsoft进程是什么意思 作用是什么(office进程)

    microsoft.exe进程查询 microsoft进程是什么意思 作用是什么(office进程)

  • Antv/X6图编辑器的应用——流程图实现(anjedi编辑器)

    Antv/X6图编辑器的应用——流程图实现(anjedi编辑器)

  • WordPress 浏览量作弊代码,随机增加浏览量(WordPress 浏览量修改)

    WordPress 浏览量作弊代码,随机增加浏览量(WordPress 浏览量修改)

  • 实际退税额怎么算
  • 汽车购买者
  • 住宿发票要附清单吗
  • 合并重组案例
  • 借款利息收入增值税税负率
  • 北京房产税如何申报缴纳
  • 企业一次性补助金是多少标准
  • 借现金还银行怎么做账
  • 支付销售产品的保险费计入什么科目
  • 下属单位或者其他单位和个人的车辆
  • 税费是哪个会计科目?
  • 小微企业需要到哪里报税
  • 增资印花税税目
  • 咨询费属于什么大类
  • 一般纳税人普通发票跨月冲红流程
  • win11右下角时间设置
  • 业务员报销清单表
  • centos6.5下载
  • 收到服务费发票可以计入什么科目
  • gradle视频教程
  • chat gpt介绍开头
  • 确认应付职工薪酬是借方还是贷方
  • vue上传文件和后端upload
  • php 提交表单
  • 计提未支付的费用
  • PHP:imagecolorexact()的用法_GD库图像处理函数
  • failed to execute goal org.apache
  • 事业单位小规模纳税人缴纳附加税有什么,税率是多少
  • 《ai人工智能》
  • wordpress转化为html
  • 基于web的网站设计与实现
  • vue引入网络js
  • uniapp微信小程序广告
  • 使用spring可以实现声明式事务吗
  • 怎样才能帮你
  • 销售旧货税率
  • 支付应付账款的文章怎么写的
  • spring框架使用教程
  • 怎样根据税负率计算税额
  • 小规模租金可以抵税吗
  • 金税四期介绍 王军
  • 企业所得税扣除项目
  • 未分配利润可以弥补亏损吗
  • 破产清算应收账款怎么评估
  • 定期定额征收和核定征收的哪种税率高
  • 冲销以前年度多提税金
  • 后续加工环节的成本利润
  • 从外面买回来的鸡蛋能孵出小鸡吗
  • 技术服务费怎么交税
  • 收到境外打电话来怎么办
  • 车费属于什么会计科目类
  • 应交个人所得税借方余额表示什么
  • 从一个公司到另一个公司叫什么
  • 哪些资产减值可以转回哪些不可转回
  • mysql的日志
  • linux 解压.z
  • 硬盘安装fedora35
  • wmiprvse.exe这是什么进程
  • wmiex.exe是什么程序
  • windows windows.old
  • 魔方u怎么弄
  • 电脑win7一开机就弹出各种广告窗口怎么办
  • win8.1无法进入系统
  • cocos2dx入门
  • 深入解析windows第7版
  • 电脑windows自动关闭
  • java grid
  • opengl消隐
  • 使用多进程web
  • Node.js中的什么模块是用于处理文件和目录的
  • react 系列
  • js控制横向滚动条
  • jquery删除dom
  • javascript快速入门
  • 重庆市电子税务局官网登录入口
  • 网上报税失败什么原因
  • 城市维护建设税税率
  • 天津普通发票查询平台
  • 发票开票系统可以查询上一年发票吗?
  • 平顶山属于河南还是河北
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号