[java进阶]——泛型类、泛型方法、泛型接口、泛型的通配符

🌈键盘敲烂,年薪30万🌈

目录

泛型的基础知识:

♥A 泛型的好处:

♠A 泛型擦除:

♣A 泛型的小细节:

泛型的使用:

①泛型类:

②⭐泛型接口:

③泛型方法:

泛型的通配符


泛型的基础知识:

♥A 泛型的好处:

  • 统一数据类型。
  • 把运行时期的问题提前到了编译期间,避免了强制类型转换可能出现的异常。

♠A 泛型擦除:

为什么java中的泛型是伪泛型❓

例如:把数据存入String类的一个集合里

- 编译器会进行泛型检查,如果不是String,你的代码下面会出现~~~(编译错误)

                                           ,如果是String类,强转为Object类存到集合里

- 将Object类转换为对应得数据类型


♣A 泛型的小细节:

  • 泛型中不能写基本数据类型
  • 指定泛型得具体类型后,可传入该类型得子类
  • 如果不写泛型,默认Object

 

泛型的使用:

①泛型类:

如果定义一个类时,类型不确定,可以定义为泛型

public class MyArrayList<E>{private Object[] Obj = new Object[10];private int size = 0;public void add(E val){Obj[size++] = val;}}
public class Demo1{public static void main(String[] args){MyArrayList<Integer> list = new MyArrayList();list.add(1);}
}

②⭐泛型接口:

  • 实现类指定类型
public class MyList Implements List<String>{// 重写List的所有抽象方法public void add(String e){……}
}
  • 实现类继续沿用泛型
public class MyList<E> Implements List<E>{public void add(E e){……}
}

③泛型方法:

当类中只有一个方法的类型不确定时,可使用泛型方法

public class Demo1{public static void main(String[] args){MyArrayList<Integer> list = new MyArrayList();ListUtil.addAll(list, 1, 2, 3);}class ListUtil{public static<E> void addAll(ArrayList<E> list, E e1, E, e2, E e3){list.add(e1);list.add(e2);list.add(e3);}    }
}

泛型的通配符

泛型不具备继承性!!!

本方法不确定类型,但是只想要继承结构里面的对象!!!

? extends E 

表示可以传递E和E的子类

? super E

表示可以传递E和E的父类

public static void method(ArrayList<? extends YE> e){……}public static void method(ArrayList<? super YE> e)(……)

📕总结:

泛型提供了编译时类型检查,避免了在运行时出现类型转换错误。这确保了代码的类型安全性,并在编译时捕获错误。

通配符可以使用上限和下限来限制泛型的范围。<? extends T>表示类型是T或T的子类,<? super T>表示类型是T或T的父类。

Java中的泛型在编译后会被擦除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/154181.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图像处理Sobel 算子

Sobel算子是一种常用的图像处理算法&#xff0c;用于边缘检测。它利用了图像中灰度值的变化来识别边缘的位置。在OpenCV中&#xff0c;Sobel算子通常用于图像梯度计算&#xff0c;其中包括水平方向和垂直方向的梯度。这两个方向的梯度合并后可以得到图像的边缘信息。 原理&…

大结局!OpenAI创始人奥特曼和 Greg Brockman 将加入微软!!!

持续48小时的OpenAI政变大戏终于迎来了大结局&#xff01; 微软堪称最大赢家&#x1f4a5;&#x1f4a5;&#x1f4a5; 微软CEO刚刚宣布&#xff1a; 我们仍然致力于与 OpenAI 的合作伙伴关系&#xff0c;并对我们的产品路线图、我们在 Microsoft Ignite 上宣布的一切继续创…

【基于Ubuntu下Yolov5的目标识别】保姆级教程 | 虚拟机安装 - Ubuntu安装 - 环境配置(Anaconda/Pytorch/Vscode/Yolov5) |全过程图文by.Akaxi

目录 一.【YOLOV5算法原理】 1.输入端 2.Backbone 3.Neck 4.输出端 二&#xff0e;【系统环境】 1.虚拟机的安装与创建 2.安装Ubuntu操作系统 3.环境的配置 3.1.Ubuntu下Anacoda安装以及虚拟环境配置 3.2.Pytorch安装 3.3.Vscode安装 3.4.Yolov5源码及环境获取安装…

SPI 实验

SPI介绍 SPI 是英语 Serial Peripheral interface 缩写&#xff0c;顾名思义就是串行外围设备接口。SPI 通信协 议是 Motorola 公司首先在其 MC68HCXX 系列处理器上定义的。SPI 接口是一种高速的全双工 同步的通信总线&#xff0c;已经广泛应用在众多 MCU、存储芯片、AD 转换器…

Java八股文(急速版)

Redis八股文 我看你在做项目的时候都使用到redis&#xff0c;你在最近的项目中哪些场景下使用redis呢? 缓存和分布式锁都有使用到。 问&#xff1a;说说在缓存方面使用 1.在我最写的物流项目中就使用redis作为缓存&#xff0c;当然在业务中还是比较复杂的。 2.在物流信息…

国外客户要求免费样品?我来教你如何应对

这一次的问题对外贸业务员来说是非常重要。无论你是做什么行业&#xff0c;无论你是做什么产品我相信这个问题对你来说超级有用。 关于发样品给客户我有四个方案来跟大家分享&#xff0c;我希望你能够喜欢希望你很认真的思考一下&#xff1a; 方法一【样品费及运费一起收】&am…

模方4.1.0新版本正式上线啦!

新增单体化自动建模&#xff0c;直角搭桥、复制三角形两种方式补洞等功能&#xff0c;还有更多功能优化&#xff0c;让你的三维模型更好看&#xff01; 欢迎前往官网下载试用→武汉大势智慧-实景三维-云端建模-新型基础设施

效率提升利器:Automa插件的实用指南

Automa是一个chrome扩展&#xff0c;通过拖拽0代码实现工作流&#xff0c;模拟网页的各种点击、表单填写等操作&#xff0c;使用时点击插件脚本一键执行&#xff0c;或者设置定时执行&#xff0c;从而简化我们的工作。 功能介绍 官方文档地址&#xff1a;Getting started | Au…

Spring的后处理器

目录 引言 BeanFactoryPostProcessor 注意 BeanPostProcessor 引言 Spring的后处理器是spring对外开发的重要扩展点&#xff0c;允许我们介入到Bean的整个实例化流程来&#xff0c;以达到动态注册BeanDefintion&#xff0c;动态修改BeanDefintion&#xff0c;以及动态修改Be…

怎么实现在微信公众号秒杀商品的功能呢

实现微信公众号秒杀商品的功能&#xff0c;需要结合微信公众平台和后端开发技术。下面将介绍整个实现过程&#xff0c;包括前期准备、开发流程和后期运营等方面。 一、前期准备 确定秒杀商品&#xff1a;选择适合秒杀的商品&#xff0c;要求数量充足、质量良好&#xff0c;同时…

求输入N段整数范围的素数之和。

求输入N段整数范围的素数之和。 可参考&#xff1a; 输入任意两个正整数a、b&#xff08;a&#xff1c;b&#xff09;&#xff0c;求[a,b]之间的所有素数和。-CSDN博客 题干求输入N段整数范围的素数之和。 若输入&#xff1a; 3 11 18 5 10 3 7 则计算[11 18]之间的素数…

一次性能测试,为啥把我逼疯了?

最近&#xff0c;公司领导让我做下性能方面的竞品对比&#xff0c;作为一个性能测试小白的我&#xff0c;突然接到这样的任务&#xff0c;下意识发出大大的疑问。 整理好心情&#xff0c;内心想着“领导一定是为了考验我&#xff0c;才给我这个任务的”&#xff0c;开始了这一…

electron使用electron-builder macOS windows 打包 签名 更新 上架

项目文件大概目录 1. 安装electron-builder 2. macOS 2.1 创建 Certificates, Identifiers & Profiles Devices 在mac上安装xcode&#xff0c;打开xcode&#xff0c;然后按以下步骤操作。 (1) xcode的菜单栏&#xff1a;xcode > settings。登录apple id。 (2) 登录后…

【操作系统】文件系统之文件共享与文件保护

文章目录 文件共享硬链接软链接 文件保护口令保护加密保护访问控制 文件共享 为了实现文件的共享&#xff0c;引入了“计数器”字段&#xff0c;当一个文件每被一个用户所共享&#xff0c;那么计数器就加一。如果一个用户删除文件&#xff0c;计数器相应的减一。如果计数器为0…

.a文件和.so文件

C 中的 .a 文件和 .so 文件是两种不同类型的库文件&#xff0c;它们有以下区别&#xff1a; .a 文件&#xff08;静态库文件&#xff09;&#xff1a; 静态库文件是编译时链接的库&#xff0c;它将所有需要的函数和符号都打包在一个文件中。在编译时&#xff0c;编译器将静态…

uniapp+vue3使用pinia,安卓端报错白屏

报错内容&#xff1a; reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->at useStore2 (app-service.js:1487:15)at (app-service.js:1714:17)at (app-serv…

Linux下 Mysql数据备份脚本

Linux下 Mysql数据备份脚本 #!/bin/bash # 日期格式 DATE$(date %Y%m%d) # 备份目录 BACKUP_DIR"/usr/local/mysql-5.7/backup" # MySQL连接配置 DB_USER"root" DB_PASSWORD"root" DB_NAME"web_bushu" # 备份文件名 BACKUP_FILE&qu…

认识.NET Aspire:高效构建云原生应用的利器

简介 在几天前的.NET 8发布会上&#xff0c;来自微软的Glenn Condron和David Fowler为我们演示了.NET Aspire&#xff0c;在Visual Studio的帮助下&#xff0c;它展现出了惊人的开发效率。 短短的十分钟内&#xff0c;David现场演示了如何轻松创建了一个具有服务发现&#xf…

Unity模拟薄膜干涉效果

Unity制作薄膜干涉效果&#xff0c;色彩斑斓的黑色石头 大家好&#xff0c;我是阿赵。   这次来做一个模拟薄膜干涉的彩色效果&#xff0c;Shader是使用ASE来连接&#xff0c;也算是ASE做复杂一点的效果的一个例子吧。 一、什么是薄膜干涉 以下解释来源于百度百科&#xff1…

微信小程序开发-----发起网络请求携带后端token

在开发的时候我们前后端一般会有一个token作为安全保护&#xff0c;当后端接收到用户的登录请求&#xff0c;后端就会发送一个token给用户&#xff0c;此时前端必须要将token保存下来&#xff0c;在每次发起网络请求的时候在header请求头里携带token,下面呢就教大家如何在微信小…