java中泛型学习总结
为什么需要使用泛型:
1):存储任意类型的数据在集合中 ,但是取出来都是Object类型的,此时就得强转.
List list = new ArrayList();list.add(1);
//Interger类型Object ele = list.get(0);
//现在需要调用Interger类中的方法I
nterger num = (Interger) ele;System.out.println(num);
2):约束存储到集合中的元素必须是相同的数据类型(相同的数据类型才能做比较,比如TreeSet类).
3):设计一个点(Point)类,来封装坐标位置,要求坐标位置支持String类型.Integer类型/Double类型.
如果重写多个方法是非常不雅的。
泛型(GenericType),从Java5开始支持的新的语法:
什么是泛型:
1):广泛通用的类型.
2):代码模板中类型不确定,谁调用该段代码,谁指明类型是什么.
泛型类:直接在类/接口上定义的泛型.
使用泛型:
保证前后类型相同.
List<String> list = new ArrayList<String>();//该List集合中只能存储String类型的元素.
因为前后类型相同,所以从Java7开始,退出泛型的菱形语法<>.
List<String> list = new ArrayList<>();
泛型不存在继承的关系(错误如下).
List<Object> list = new ArrayList<String>();//错误的
从此以后,使用集合都得使用泛型来约束该集合中元素的类型.
通过反编译,发现:泛型其实也是语法糖,底层依然没有泛型,而且依然使用强转
泛型方法:在方法上声明泛型.
情况1):泛型类中的泛型只能适用于非静态方法,如果需要给静态方法设置泛型,此时使用泛型方法:
情况2):泛型类中的泛型应该适用于整个类中多个方法,有时候只对某一个方法设置泛型即可.
-----------------------------------------------------
一般的,把自定义的泛型作为该方法的返回类型才有意义,而且此时的泛型必须是由参数设置进来的.
如果没有参数来设置泛型的具体类型,此时的方法一般返回设计为Object即可.
泛型的通配符和上限和下限:
泛型的通配符:不知道使用什么类型来接收的时候,此时可以使用?,?表示未知,通配符.
此时只能接受数据,不能往该集合中存储数据.
泛型的上限和下限:用来限定元素的类型必须是X类的子类或相同, X的父类或相同.
泛型擦除和转换:
泛型的擦除:
1):泛型编译之后就消失了(泛型自动擦除);
2):当把带有泛型的集合赋给不带泛型的集合,此时泛型被擦除(手动擦除).
堆污染:
java中泛型学习总结相关推荐
- Java中泛型 Class<T>、T与Class<?>、 Object类和Class类、 object.getClass() 和 Object.class
From:Java中泛型 Class<T>.T 与 Class<?>. Object类 和 Class类. object.getClass() 和 Object.class : ...
- Java中泛型的使用
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.概述 二.泛型分类 1.泛型类 2.泛型接口 3.泛型方法 3.1 泛型方法的基本用法 参考文档 前言 提示:这里 ...
- Java中泛型总结(全面)
参考资料: 书:Java编程思想 博客: https://blog.csdn.net/wang__qin/article/details/81415223 https://blog.csdn.net/ ...
- Java中泛型的各种使用
Java中的泛型的使用: 1.普通的泛型使用在使用类的时候后面的<>中的类型就是我们确定的类型.public class MyClass1<T> {//此处定义的泛型是Tpri ...
- 【转载】java中泛型使用详解
引入 Type接口 Class类 Method类 Field类 ParameterizedType接口 TypeVariable接口 类中定义泛型变量 方法中定义泛型变量 方法中泛型参数和泛型返回值 ...
- Java中注解学习系列教程-2
简介 在上一篇文章中,我们讲解了:Java中注解的定义.JDK中内置注解.第三方注解.本文是注解系列教程中的第二篇.来看看今天主要内容:1:注解的分类2:元注解说明3:自定义注解声明一:注解的分类注解 ...
- Java中注解学习系列教程-1
前言: 我们为什么要学习注解? 注解是我们的编程更简洁明了.spring boot的流行也带动了注解.spring boot中就使用了大量的注解来减少配置.我们在使用spring boot开发时候,感 ...
- Java中泛型的?和T的区别
前言: jdk5.0后java提供了泛型,用大写字母表示,一般用T,表示是一个不确定的具体的类型. ?表示是一群不确定的具体的类型,但?是它们的父类. 正文:?和T的区别 T:代表一种类型. ?:通配 ...
- Java中泛型的使用场景
泛型: 泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型.这种参数类型可以用 ...
最新文章
- 脑电信号预处理--去趋势化(Detrended fluctuation analysis)
- 记一次被DDoS敲诈的历程
- springmvc学习笔记--ueditor和springmvc的集成
- 2017西安交大ACM小学期数论 [等差数列]
- Linux下CMAKE编译jsoncpp,使用CMake引入jsoncpp
- Django Web实现动态三级联动
- 内联元素转化为内联块元素的一些小细节
- 深入解析字符串的比较方法:“==”操作符;String.Equals方法;String.Compare方法;String.CompareOrdinal方法。...
- android:AdapterView.OnItemClickListener
- 运维小知识---If you insist running as root, then set the environment variable RUN_AS_USER=root...
- 渗透测试-SQL注入之宽字节注入
- java获取指定时间为第几周_Java8根据一年中的第几周获得Monday
- 面试和谈薪技巧及如何避开常见的陷阱
- CAN(Controller Area Network)网络通信简介
- 阿里巴巴引入字体图标的第二种方法:
- java 通过User-Agent来判断是否是移动浏览器
- 网络偷窥者很多,如何消除上网的浏览痕迹?
- 互联网公司级别的简单划分(小白总结)
- 开源免费录屏和直播软件OBS Studio教程(02)
- 项目文档编制-招标书
热门文章
- android 名片识别 简书,iOS 自己实现 名片识别 三 图片处理
- 通域消化内镜Android患者版,市中心医院消化内科Ⅰ病区开创超声内镜治疗新领域...
- shell 字典_腾讯T4周末不陪对象,就为了手打这份shell编程笔记
- JAVA进阶教学之(foreach)
- devtools的ctrl加r_Chrome DevTools调试技巧
- cnn生成图像显著图_基于CNN与图像前背景分离的显著目标检测
- Java技术知识点的一些总结
- 文本编辑器查看 cprintf颜色_实战PyQt5: 028-纯文本编辑控件QPlainTextEdit
- python自动输入账号密码_Python如何基于selenium实现自动登录博客园
- mysql scws_apache+mysql+php+scws+myft_scws编译安装全程记录