java泛型的含义是什么及如何使用
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,这篇"java泛型的含义是什么及如何使用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇
千家信息网最后更新 2025年11月08日java泛型的含义是什么及如何使用
这篇"java泛型的含义是什么及如何使用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"java泛型的含义是什么及如何使用"文章吧。
泛型
实例解释为什么引入泛型
// 不使用泛型List list = new ArrayList();list.add("coding"); // 集合中可以添加不同类型的元素(集合就是这么设计的,主要是为了实现通用性,但也带来了弊端,泛型就是为了解决这个产生的)list.add(1024); // 元素丢进集合中全部变成了ObjectString result1 = list.get(0); // 此行代码编译器不过String result2 = (String)list.get(0); // 如果想要还原集合中元素需要使用强制类型转换,强制类型转换可能引发异常,因为集合中元素类型有多种。String result3 = (String)list.get(1); // 此行代码运行时会报类型转换异常ClassCastException,所以说集合不使用泛型来限制数据类型的话很容易产生bugSystem.out.println(result2);泛型的定义
1、通过上面例子的引入,我们可以总结出:泛型本质上是参数化类型,我们可以为类,接口,方法指定一个类型参数,通过这个参数来限制操作的数据类型,从而保证类型转换的绝对安全。
2、基本用法:泛型集合
// 使用泛型List str1 = new ArrayList(); // 在<>中指定集合中元素类型str1.add("java");str1.add(1024); // 此行代码编译器报错,也就是限制了集合中类型只能为String类型,避免了强制类型转化时出现异常 泛型的其它用处
上面的实例告诉我们泛型可以解决集合中存在的不足之处,但泛型的作用不止于此。
泛型方法
泛型方法在定义的时候需要在方法的返回类型之前加上
,这个T可以换成其他字母,T代表方法的参数是什么类型,T可以表示任何包装类型,不支持基本类型。 泛型方法并不显式指定其参数的数据类型,而是在使用该方法时才确定数据类型。这样带来的好处就是一个泛型方法可以接受不同类型的输入参数,减少了重复代码。下面的例子仅供说明。
public class Generics_Test { // 泛型方法 public static void print(T[] arr) { System.out.println(arr[0]); } public static void main(String[] args) { String[] str2 = {"test"}; print(str2); Integer[] num = {1024}; print(num); }} 泛型类
引入背景:当一个类中有多个泛型方法,为了避免每个泛型方法在声明的时候都需要加上
来说明其是泛型方法,就引入了泛型类。
// 泛型类public class Generics_Test { public static void print(T[] arr) { // static 仍然需要显示声明,否则会报错,因为静态方法不要类实例化就能调用。 System.out.println(arr[0]); } public void printf(T[] arr) { // 普通方法不需要再声明 System.out.println(arr[0]); } public static void main(String[] args) { Generics_Test gt = new Generics_Test(); String[] str2 = {"test"}; gt.printf(str2); Generics_Test gt1 = new Generics_Test(); Integer[] num = {1024}; gt1.printf(num); }} 泛型的高级用法
通配符:>
使用 > 可以不用指定参数类型,即不用在方法的返回值前声明
// 通配符>public class Generics_Test { public static void print(List> arr) { // 使用 > 可以不用指定参数类型,即不用在方法的返回值前声明 Object result = arr.get(0); System.out.println(result); } public static void main(String[] args) { List str1 = new ArrayList(); str1.add("coding"); print(str1); }} 通配符: extends anyClass>
java的泛型默认是可以使用任何包装类型来实例化一个泛型类对象
public class Generics_Test { public static void main(String[] args) { // 因为object是所有类型的父类,所以可以使用任何包装类型来实例化一个泛型类对象 Generics_Test arr1 = new Generics_Test(); Generics_Test link1 = new Generics_Test(); Generics_Test str1 = new Generics_Test(); }} 限制泛型类的可用类型。
T extends anyClass:该泛型类接受的类型必须继承或实现 anyClass(其中 anyClass 表示类或接口)
public class Generics_Test { public static void main(String[] args) { Generics_Test arr1 = new Generics_Test(); Generics_Test link1 = new Generics_Test(); Generics_Test list1 = new Generics_Test(); Generics_Test hashmap1 = new Generics_Test(); // 此行代码会报错,因为HashMap没有实现List接口 }}
泛型类的继承
public class Generics_Test{}class SonGenericsClass extends Generics_Test{} 以上就是关于"java泛型的含义是什么及如何使用"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
类型
方法
参数
代码
元素
内容
实例
不用
就是
数据
限制
含义
接口
通配符
会报
包装
强制
不同
例子
对象
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
一个公众号配置多个服务器地址
北京创富网络技术有限公司
通信网络安全服务风险评估
拳皇97ol 服务器
服务器如何查询目录使用空间情况
外汇局网络安全自查报告
数据库安装完不启动
公司的网络安全新闻稿
服务器怎么查看
委托软件开发服务合同
创业软件开发项目推荐
如何用服务器内网ip去访问网站
洛阳app软件开发建设方案
小火箭服务器分享
成都宝华农信网络技术有限公司
吉林市三角龙洲服务器
泰安诚信积分管理软件开发
公众网络安全宣传方案
数据库山洞
数据库技术与应用学习心得
android判断数据库
安徽保险软件开发哪家好
java判断数据库是否连通
新建一个数据库表
古文字诂林数据库
网络安全到底有什么用
银行软件开发都有哪些系统
义乌市千航网络技术服务部
tidb创建数据库用户
奉贤区智能软件开发诚信合作