Java学习-泛型

韩顺平Java学习 泛型 自己照着视频写的笔记 阅读详情

1.泛型程序设计(Generic programming) :使用泛型编写的代码可以被很多不同类型的对象所重用。
2.泛型的好处:可读性好,易维护;
2.1 非泛型示例:

//使用继承来实现泛型,不使用泛型类ArrayList<E>
//创建一个简单的arraylist类,带有增和查方法
public class arraylist {
	private Object[] element = new Object[10];
	private int c = 0;
	
	public void add(Object o) {
		element[c++] = o;
	}
	public Object get(int i) {
		return element[i];
	}
}

public class test {
	public static void main(String[] args) {
		arraylist al = new arraylist();
		
		al.add("hi");
		al.add("123");
//		array.add(123);//输入123,编译不会报错
		String str = (String) al.get(1);
		System.out.println(str);
	}
}
	console结果:
	123

分析:可以发现通过继承方式,有两个问题:
1.使用get()查询时返回的是Object对象,需要进行强制转换为String;
2.使用add()添加元素时编译器不会错误检查,任何对象都可以输入进去,运行后才会报错;

2.2 泛型示例:

public static void main(String[] args) {
	ArrayList<String> array = new ArrayList<String>();
	array.add("hi");
	array.add("123");
//	array.add(123);//输入123,编译会报错
	String str = array.get(1);
	System.out.println(str);
}
	console结果:
	123

分析:
1.当调用 get 的时候,不需要进行强制类型转换,编译器就知道返回值类型为 String,而不是 Object ;
2.编译器可以进行检査,避免插人错误类型的对象;

3.泛型类
示例:

//定义一个简单的泛型类,类型变量 T和U,用尖括号 ( < >) 括起来,并放在类名的后面
public class Model<T,U> {
	private T first;
	private U second;
	public Model() {
		first = null;
		second = null;
	}
	public Model(T first, U second) {
		super();
		this.first = first;
		this.second = second;
	}
	public T getFirst() {
		return first;
	}
	public void setFirst(T first) {
		this.first = first;
	}
	public U getSecond() {
		return second;
	}
	public void setSecond(U second) {
		this.second = second;
	}
	
}
//测试泛型类
public class demo {
	public static void main(String[] args) {	
		Model<String, Integer> ts = new Model<String,Integer>();
		
		ts.setFirst("字符串");
		ts.setSecond(123);
		System.out.println(ts.getFirst() + ts.getSecond());
	}
}

注意:

  • 在 Java 库中,使用类型变量变量 E 表示集合的元素类型、K 表示表的关键字、V 表示值的类型、T ( 需要时还可以用临近的字母 U和 S) 表示“ 任意类型”。
  • Java泛型类和C++模板类有本质区别;

4.泛型方法

如何快速深入学习 Java 的泛型? 哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛 阅读详情

相关推荐

深入学习 Java 泛型的使用方法!

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云/阿里云/华为云/51CTO;欢迎大家常来逛逛

喵手的博客 1014

java学习笔记11——泛型

总结:1.自定义泛型类\接口1.1 格式1.2 使用说明① 我们在声明完自定义泛型类以后,可以在类的内部(比如:属性、方法、构造器中)使用类的泛型。② 我们在创建自定义泛型类的对象时,可以指明泛型参数类型。一旦指明,内部凡是使用类的泛型参数的位置,都具体化为指定的类的泛型类型。③ 如果在创建自定义泛型类的对象时,没有指明泛型参数类型,那么泛型将被擦除,泛型对应的类型均按照object处理,但不等价于object。- 经验:泛型要使用一路都用。要不用,一路都不要用。

qq_58956810的博客 1221

Cesium+Three.js融合实战:从零构建GIS与BIM一体化场景

本文详细介绍了如何将Cesium与Three.js进行技术融合,从零构建GIS与BIM一体化场景。通过环境配置、核心场景搭建、坐标转换、性能优化及交互处理等实战步骤,阐述了Cesium负责宏观地理空间渲染、Three.js处理微观精细BIM模型的协同方案,为智慧城市、数字孪生等应用提供关键技术实现路径。

weixin_29230865的博客 459

Java泛型学习

一、 序言 一直在用的语言是Java,本以为掌握的已经不错了,但最近面试才发现之前自己只是停留在熟料使用的状态,距离编写出优雅,高可复用的代码还有一定的距离。强烈建议大家有机会一定要去看一下JDK源码,写的非常漂亮,可以学到不少东西! 二、 泛型 为什么要使用泛型? 进行日常开发时,当面对有重复的代码时,我们自然而然的将公共部分抽取出来封装成一个函数或方法,然后进行频繁调用。同样的道理,在进行功...

Michael Hsu 393

Qt绘图库对决:QWT与QCustomPlot的实战选型指南

本文为Qt开发者提供了QWT与QCustomPlot两大绘图库的实战选型指南。文章从功能特性、性能资源、开发效率三大维度进行深度对比,并结合工业监控、科学计算、嵌入式设备等典型场景,给出了清晰的决策清单。对于需要专业科学图表(如极坐标、等高线图)的场景推荐QWT;对于追求高性能、实时性、快速开发及嵌入式部署的通用图表需求,QCustomPlot是更优选择。

alpha的博客 241

(1)大蚂蚁即时通讯

即时通讯软件BigAnt(大蚂蚁)是杭州艾朴软件推出的一个”企业级”的即时通讯平台。该平台专为企业,其他企事业单位和政府单位而设计,目的就是为了增强内部沟通能力,提高内部员工的工作效率;同时服务器就直接置于单位内部,所有信息由单位自己管理,让单位以更安全、更可伸缩和更易于管理的方式灵活方便地使用协同和通信服务的功能! BigAnt(大蚂蚁)即时通讯软件包括服务器端和客户端。客户端功能包括单位

少安的砖厂 2234

Java泛型学习系列【转】

Java泛型学习系列

kermit的博客 418

基于最小二乘法蒙特卡洛模拟(LSM)可转债定价原理及算法演示

可转换债券是一种极其复杂的信用衍生产品,除了一般债权外,它还包含着多个期权,包括转股权、回售权、赎回权和发行人的转股价格修正权,条款的复杂性决定了可转债定价的复杂性。可转债定价方法较为普遍的是依据B-S期权定价公式和二叉树模型,在对内嵌期权定价的基础上,加上纯债的价值,从而对可转债进行定价。但是可转债附加的期权不仅仅是一个美式期权,而是附加了赎回、回售和下修等特殊条款,以上定价方法仅可看做对可转债价值的近似估计,难以对其中的条款博弈进行定价。

weixin_43971191的博客 1729

java泛型编程 pdf_java 泛型编程学习

先发布,以后有空再修改。。。第一次看到《java核心技术卷一》中关于泛型这部分的时候感觉很复杂,似乎有说不完的约束条件,让人难以理解。当时只是囫囵吞枣般过了一遍,也没有看出个什么来。现在是时候回过头来认真学习学习这方面的知识啦。在这里记录一下JAVA泛型中比较难理解的部分。泛型表达式的类型擦除按照书中的例子:class Pair{public Pair(){first=null;second=nu...

weixin_39627144的博客 187

基于Python实现的捕鱼达人小游戏源代码+使用说明

摘要: 本文介绍了一款自制的捕鱼达人小游戏,使用Python3和Pygame模块开发。游戏包含完整的资源文件(图片、音效、字体)和源码结构(11个功能模块),实现了大炮移动射击、特殊子弹、炸弹、难度递增等核心玩法。安装需配置Python环境和Pygame模块,运行main.py即可启动游戏。游戏支持键盘控制(方向键移动、空格射击、1键放炸弹),默认时长600秒,包含开始菜单、游戏界面和结束界面。所有代码均有详细注释,项目已开源并提供下载链接。(150字)

2301_76484015的博客 666

空间数据库(1):Arcgis10.2连接PostgreSQL9.1,创建空间数据库,导入空间数据

1、arcgis的安装对于gis人员来说想必并不陌生,此处就不赘述了。那么就先从PostgreSQL说吧,我这里用的是跟Arcgis desktop 10.2所支持的9.1或者9.2版本,大家也可以用相对应的更高的版本来配置,注意的是版本一定要相互匹配,不仅是Arcgis与PostgreSQL的匹配,还有PostgreSQL与PostGIS匹配。 按道理desktop是32位的,应该用PostgreSQL的32位,但是我实在找不到32位的PostGIS9.1,所以就用64位的吧,后面配置部分可能需

XIAOHUA的博客 1317

Java集合学习之泛型

3.1 泛型概述 在前面学习集合时,我们都知道集合中是可以存放任意对象的,只要把对象存储集合后,那么这时他们都会被提升成Object类型。当我们在取出每一个对象,并且进行相应的操作,这时必须采用类型转换。 Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。 假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何

树下一朵云的博客 289

手把手教您如何在飞牛NAS上部署OpenClaw(Clawdbot/Moltbot)智能助手,接入钉钉,0成本使用(万字保姆级教程)

想在飞牛NAS上部署一个24小时待命的AI助手?🤖 本文手把手教您如何在飞牛NAS上部署一个完全免费的OpenClaw智能助手 ✅

XiaoqiangClub的博客 7226

java泛型个人学习笔记

泛型是一种编程概念,被允许再定义类,借口或方法时使用的参数,不是一种具体类型。借助泛型,我们能够编写复用的代码以下是一个简单的泛型示例// 私有字段,类型为泛型 T,可存任意类型数据this.t = t;return t;以上代码中,Box就是一个泛型类,T是一种类型参数。这段代码将Box进行实例化,定义时使用了类型参数T,说明可以存储任意类型的数据。这里使用了Integer作为类型参数,意味着Box专门用来存储Integer类型的数据。

2401_84040384的博客 411

道家学派创始人老子,对 SAP ABAP 这门编程语言的客观评价

SAP HANA 之引入,使 ABAP 于处理大数据,云计算等新兴领域,展现新的生命力,如老吾老以及人之老,幼吾幼以及人之幼,扩展其在信息技术领域的应用,以涵养更广之需。ABAP 能以数据为基,流转于系统之中,如道法自然,顺应企业之生态,助之以高效运转,减少冗杂,简化管理,使企之运营,如小国寡民,无为而治。然 ABAP 如老树盘根,更替不易,面对新兴技术,如云计算、大数据等,其更新之速,未能与时俱进。如水之于渊,柔而能胜刚,ABAP 之发展,顺时而动,应需而变,其在编程领域,犹如道之于万物,渐不可或缺矣。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1021

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

java泛型学习,获取泛型的实际类型,泛型知识点总结

                   java泛型学习,获取泛型的实际类型,泛型知识点总结   一、什么是泛型 1、把明确数据类型的工作推迟到创建对象或者方法调用的时候才去确定的特殊类型。 2、格式: Page&lt;数据类型&gt; , 注意: 该数据类型只能是引用类型。 3、泛型的种类: 泛型类 如: public class Generic&lt;T&gt; {} 泛型接口 如...

HaHa_Sir的博客 4379

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

Java学习笔记 13、泛型

文章目录前言一、认识泛型二、自定义泛型结构自定义泛型举例继承泛型类两种方式自定义泛型注意点三、泛型不同使用情境泛型表示接口泛型方法四、泛型继承上的体现五、通配符使用 前言       本篇文章内容是在原有笔记之上进行补充总结,相当于回炉重造,第一次学习Java是看的尚硅谷教程:尚硅谷_Java零基础教程-java入门必备-适合初学者的全套完整版教程(宋红康主讲),其中比较好的部分内容如部分图片会借鉴尚硅谷笔记(如有侵权,我会删除)。  

每个人都是独一无二的,把握好自己的节奏,跟着自己的心走。 710

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

java泛型学习总结

泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数。这种类型参数可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 在没有泛型的情况下,通过对类型Object的引用来实现参数的转换,这种转换是需要显式地强制类型转换,对于强制类型转换错误的情况,编译器可能不提示错误,而在运行时候却又通不过,这是一个安全隐患。可能给我们的开发带来了麻烦,难以找到运行时错误,增加不必要的精力开支,所以一般提倡使用泛型来实现参数化类型。 使用泛型的好处 类型安全。泛型的主要目的就是提高Java程序的类

qq_41784749的博客 1万+

Java学习笔记——泛型

示例代码定义了一个泛型类 MyArrayList,该类封装了一个 ArrayList 对象,并提供了 add 和 remove 方法来添加和移除元素。方法接收一个泛型数组 T[] names,其中 T 可以是任何对象类型。首先定义了一个父类Car,三个子类车的品牌“BYD”、“XIAOMI”、“WL”,然后还要定义一个go方法是实际的比赛。这样就可以接收任何类型的参数以及返回任何类型的结果。类型变量建议用大写的英文字母,常用的有:E、T、K、V等。”,可以在“使用泛型”的时候代表一切类型;

weixin_44456914的博客 1937

Java学习笔记 十二、泛型

Java学习笔记 十二、泛型

qq_43681634的博客 282

Java泛型学习总结

Java泛型学习总结 文章目录Java泛型学习总结一、什么是泛型二、类型擦除三、泛型的使用1.泛型类2.泛型方法类中的泛型方法静态方法和泛型3.泛型接口四、通配符 ?总结 一、什么是泛型 泛型,即“参数化类型”。就是把具体类型参数化。 泛型的本质就是为了参数化类型,在不创建新类型的情况下,通过泛型指定的不同类型来控制形参限制的类型。 当确定具体类型后,泛型提供一种类型检测机制,只有相匹配的数据才能正常赋值,否则编译器不会通过。 泛型提高了代码可读性,不必进行强制类型转换 二、类型擦除 泛型信息只存在于

偶滴博客 491

【Java学习笔记】泛型

【Java学习笔记】泛型

在csdn分享更多技术知识,相互交流 942

java泛型学习

设计目的 当我们将一个对象放入集合中,集合不会记住此对象的类型, 当再次从集合中取出此对象时,改对象的编译类型变成了Object类型,但其运行时类型任然为其本身类型 取出集合元素时需要人为的强制类型转化到具体的目标类型,强转的时候容易报错"java.lang.ClassCastException" 引出泛型 使集合能够记住集合内元素各类型,且能够达到只要编译时不出现问题,运行时就不会出现“java...

一夜听风雨2019的博客 407

Java学习第八部分——泛型

本文介绍的泛型的概述,使用,类型参数,类型擦除,通配符,高级用法,idea项目实战等

2503_92550335的博客 948

java学习-泛型

1、泛型概述 泛型即是参数化类型,定义方法时候传入形式参数,调用方法时候传入实际参数,泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。 2、一个例子 List arrayList = new ArrayList(); arrayList.add("aaaa"); arrayList.add(100); for(int i = 0; i< arrayList.size();i++){ String item = (String)arra

总分全班第一 333

java 泛型学习

通配符来进行适配和限制吧,如果你需要作用域类型(这可能在操作通用数组类型时更明显)或者声明类的类型参数时请使用 T 类型变量。类型参数定义了一种代表作用域类型的变量(例如,T),通配符只是定义了一组可用于泛型类型的允许类型。同时 还有一个点, 这个泛型的声明类上是否存在, 如果类上不存在泛型的声明, 那么方法上是需要自己去声明的。T 用作 声明类的类型参数、通用方法的类型参数 (这里注意 类型参数 和 参数类型 是两个概念)在类里面有 成员变量 的类型 是泛型 T , 那么是需要在类上进行 去声明的。

weixin_45442529的博客 983
上一篇: Java学习-集合类
下一篇: Java学习-线程Thread
Jagger_Lin
博客等级 码龄8年 17粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值