章15——泛型generic

news/2024/9/27 20:45:26

泛型的引入

泛型引入前后代码的比较

public static void main(String[] args) {ArrayList arrayList = new ArrayList();arrayList.add(new Dog("wang",10));arrayList.add(new Dog("xin",1));arrayList.add(new Dog("ran",5));//遍历for (Object o :arrayList) {//需要向下转型Dog dog = (Dog) o;System.out.println(dog.getName());}//表示存放到该集合中的元素只能是DOG类型或者其子类型//如果编译器发现不满足要求就会报错ArrayList<Dog> arrayList1 = new ArrayList<Dog>();arrayList1.add(new Dog("wang",10));arrayList1.add(new Dog("xin",1));arrayList1.add(new Dog("ran",5));//遍历时候可以直接取出DOG类型而非OBJECT//因为编译器明白,一定能取出DOG类for (Dog dog : arrayList1) {System.out.println(dog.getName());}}
}

泛型介绍
泛型是一种可以表示(接收)数据类型的数据类型。

class Person3<E>{//属性的类型是在创建或者定义PERSON时去指定一个//或者是某个方法的返回值类型,参数类型E s;public Person3(E s){this.s = s;}public E f(){return s;}public void t(){//此处的显示是变化的,E可以表示数据类型的一种System.out.println(s.getClass());}
}

泛型的语法

泛型的使用细节

自定义泛型
自己写了个类或者接口,然后自己规定泛型,C++中的模板。

静态方法是和对象没有关系的,所以无法判断泛型是什么类型。
所以静态数据成员和静态成员方法都不可以用泛型。
在类加载时对象还没有创建。
JVM无法完成初始化。

使用泛型的数组不可以初始化,如下:
及不可以直接实例化。

创建对象时不指定泛型类型是OK的,不一定非要<>才可以构建。但是此时所有泛型全都指定为OBJECT。

如上,接口中定义的成员不能使用泛型.

继承接口时:

当调用方法时,传入参数,编译器就会确定类型。(直接往里面传参数就OK了)
方法分为泛型方法(必须新自定义泛型),和仅仅使用了泛型的方法。

泛型的继承和通配符

图片中的第一条代码是不允许的,因为泛型不具有继承性。

通配符用于定义了泛型的类作为参数时,比如系统定义或者自定义,规定了接收使用了何种泛型的类,如下图:

JUNIT

在方法上方@Test alt + enter,一般是在JUNIT5.4

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

QGIS 操作

qgis 两个shp 文件 合并 去重,导出新的shp qgis 导出shp

IDA pro

网上可以找多许多讲解IDA pro的使用教程,想着自己能写一个尽量全一点的,于是补写了本片文章(本篇文章只讲解使用,默认大家都会下载与安装) 参考: https://lazzzaro.github.io/2020/05/12/reverse-IDA/ https://www.cnblogs.com/Chary/p/17195663.html页面介绍 静态分析界面…

深度讲解-APP安全评估报告(APP上架必备)

随着《具有舆论属性或社会动员能力的互联网信息服务安全评估规定》(以下简称《评估规定》)的发布,互联网信息服务提供者在开展具有舆论属性或社会动员能力的App服务时,必须遵循相应的安全评估流程。以下是详细的App安全评估申请流程,帮助您顺利完成评估,确保应用合规与安…

[转]boost使用之编译库及遇到的问题

最近因为在学习网络编程相关的东西,准备学习一下boost,毕竟原生的网络编程太麻烦。看了一下其实windows下想使用起来很简单,就是下载库,然后运行脚本,然后运行exe库就出来。在把头文件和库的目录包含进去就可以了。在此详细记录一下: 0、预装准备 电脑WIN10系统,已经安装…

字符编码发展史4 — Unicode与UTF-8

上一篇《字符编码发展史3 — GB2312/Big5/GBK/GB18030》我们讲解了ANSI编码中的GB2312/Big5/GBK/GB18030。本篇我们将继续讲解字符编码的第三个发展阶段中的Unicode与UTF-8。 2.3. 第三个阶段 国际化 前面提到的第二个阶段,各个国家和地区各自为政,纷纷制定了适用于自己国家语…

sql注入常见绕过方法

sql注入可以说是非常成熟的攻击手段了 对其的防御体系也很完善 据owasp统计 存在注入类漏洞的网站不超过10% 首先我们了解下sql注入的类型: 分为直接有回显的:联合注入: 通过联合查询语句进行信息的查询 需要页面回显数据 报错注入: 需要页面存在查询语句报错回显 堆叠注入: 需…

Volcano新版本发布:10大功能提升统一调度和细粒度资源管理能力

Volcano是业界首个云原生批量计算社区,也是 CNCF 首个及唯一孵化级批量计算项目。Volcano主要用于 AI、大数据、基因、渲染等诸多高性能计算场景,对主流通用计算框架均有很好的支持。本文分享自华为云社区《Volcano v1.10.0 版本正式发布!10大功能全面提升统一调度和细粒度资…

9.27 模拟赛(NOIP十三连测 #10)

2024--梦熊&太戈--NOIP十三连测 #10【订正】 - 比赛 - 梦熊联盟 (mna.wang) 复盘 开 T1。差分转化。模拟了一下样例感觉方案好像是唯一确定的,不需要贪心/DP。但不太能证。 想了会感觉找不出反例。然后写完了。对拍没挂。用时不到 \(30\) 分钟。 T2。\(m \le 20\) 且数据随…