Java从入门到精通笔记篇(十二)

news/2024/11/13 15:36:38/

枚举类型与泛型

枚举类型可以取代以往常量的定义方式,即将常量封装在类或接口中

使用枚举类型设置常量

关键字为enum

枚举类型的常用方法

values()方法

枚举类型实例包含一个values()方法,该方法将枚举中所有的枚举值以数组的形式返回。

valueOf()可以将普通字符串转换为枚举类型

compareTo()方法用于比较两个枚举类型对象定义时的顺序。

枚举类型中的ordinal()方法用于获取某个枚举对象的位置索引值。

注意:

关于构造方法,在枚举类型中,无论是无参构造方法还是有参构造方法,修饰权限都为private。

泛型

泛型实质上就是使程序员定义安全的类型。

将基本类型向上转型或者是向下转型时,用错了类型,或者并没有执行该操作,就会出现异常,但由于语法不存在错误,因此可以被编译器接受,但在执行时会出现ClassCastException异常。

定义泛型

类名<T>

T是泛型的名称,代表某一种类型。如果不指定具体类型,T则采用Object类型。

在使用类中的方法传递或返回数据类型时将不再需要进行类型转换操作,而是使用在声明泛型类对象时“< >”符号中设置的数据类型。

在定义泛型类时,可以声明多个类型,在实例化指定类型的对象时就可以指定多个类型。

Class Myclass<T1,T2>{}

Myclass<Boolean,Float> m = new Myclass<Boolean,Float>()

定义泛型类时也可以声明数组类型,但注意不可以使用泛型来建立数组的实例。

使用泛型实例化常用集合类

泛型的高级用法

限制泛型可用类型

Class 类名称<T extends anyClass>

使用泛型限制后,泛型类的类型必须实现或继承anyClass这个接口或类,且必须使用extends关键字。例如下列的l1和l2是正确的,l3则不能。

当没有使用extends关键字限制泛型类型时,默认Object类下的所有子类都可以实例化泛型类对象。

使用类型通配符

作用是在创建一个泛型类对象时限制这个泛型类的类型实现或继承某个接口或类的子类。

泛型类名称<? extends List> a =null

还可以将该实例放置在方法的参数中。

Public void doSomething(A<? extends List> a){}

如果使用A<?>这种形式实例化泛型类对象,则默认表示可以将A指定为实例化Object及以下的子类类型。

“List<?> l2 = l1”语句与“List l2 = l1”语句存在何种本质区别?这里需要注意的是,对于使用通配符的对象不能向其中加入新的信息,只能从其中获取或删除信息。

泛型类型限制除了可以向下限制,还可以进行向上限制,只要在定义时使用super关键字即可。例如,像“A<? super List> a = null;”这样定义后,对象a只接受List接口或上层父类类型,如“a =new A<Object>();”。

定义为泛型的类和接口也可以被继承与实现。

如果在SubClass类继承ExtendClass类时保留父类的泛型类型,需要在继承时指明,如果没有指明,直接使用“extends ExtendsClass”进行继承操作,则SubClass类中的T1、T2和T3都会自动变为Object类型,所以在一般情况下都将父类的泛型类型进行保留。

泛型总结

泛型的类型参数只能是类类型,不可以是简单类型,如A<int>这种泛型定义就是错误的。

泛型的类型个数可以是多个。

可以使用extends关键字限制泛型的类型。

可以使用通配符限制泛型的类型


http://www.ppmy.cn/news/1546708.html

相关文章

初始化mysql5.7

-- 环境变量 MYSQL_HOME %MYSQL_HOME%\bin -- 新增配置文件 my.ini [mysqld] port 3306 basedir D:/develop/MySQL/mysql-5.7.44-winx64 datadir D:/develop/MySQL/mysql-5.7.44-winx64/data max_connections 200character-set-serverutf8 default-storage-engineINNODB …

科研绘图系列:R语言差异分析双侧柱状图(grouped barplot)

文章目录 介绍加载R包数据画图系统信息介绍 双侧柱状图(grouped barplot),也称为分组柱状图,是一种用于展示不同组别之间比较的数据可视化图表。它通过将不同组别的柱状图并排放置,可以直观地比较不同组在各个类别上的表现或特征。以下是双侧柱状图的一些关键特点和用途:…

VBA高级应用30例应用3在Excel中的ListObject对象:插入行和列

《VBA高级应用30例》&#xff08;版权10178985&#xff09;&#xff0c;是我推出的第十套教程&#xff0c;教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开&#xff0c;这套教程案例与理论结合&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以…

软考系统架构设计师论文:论多源数据集成及应用

试题二 论多源数据集成及应用 在如今信息爆炸的时代,企业、组织和个人面临着大量的数据。这些数据来自不同的渠道和资源,包括传感器、社交媒体、销售记录等,它们各自具有不同的数据格式、分布和存储方式。因此如何收集、整理和清洗数据,以建立一个一致、完整的数据集尤为重…

推荐一个Star超过2K的.Net轻量级的CMS开源项目

推荐一个具有模块化和可扩展的架构的CMS开源项目。 01 项目简介 Piranha CMS是一个轻量级且跨平台的CMS库&#xff0c;专为.NET 8设计。 该项目提供多种模板&#xff0c;具备CMS基本功能&#xff0c;也有空模板方便从头开始构建新网站&#xff0c;甚至可以作为移动应用的后端…

Oceanbase-Topk直方图

文章目录 计算公式&#xff1a;公式的含义&#xff1a;举例解释场景设定直方图记录情况结果分析 总结 计算公式&#xff1a; (1 - (1 / bucket_size)) * 100 这个计算公式&#xff0c;用来确定在 Topk 直方图中&#xff0c;哪些值会被认为是“重要值”&#xff0c;即超过特定的…

网络安全-蓝队基础

声明 学习视频来自 B 站UP主泷羽sec&#xff0c;如涉及侵权马上删除文章。 笔记的只是方便各位师傅学习知识&#xff0c;以下网站只涉及学习内容&#xff0c;其他的都与本人无关&#xff0c;切莫逾越法律红线&#xff0c;否则后果自负。 ✍&#x1f3fb;作者简介&#xff1a;致…

企业信息表的多维数据增强:资质属性与海关数据的添加方法

文章目录 摘要1. 背景介绍2. 原始数据简介海关数据 3. 企业资质添加&#xff1a;代码实现3.1 表格拼接3.2 企业资质属性添加 4. 海关数据添加5. 总结 摘要 本文探讨了如何通过企业资质和海关出口数据的加入&#xff0c;丰富企业信息表的维度&#xff0c;为企业分析提供更强大的…