为什么需要使用泛型:

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中泛型学习总结相关推荐

  1. Java中泛型 Class<T>、T与Class<?>、 Object类和Class类、 object.getClass() 和 Object.class

    From:Java中泛型 Class<T>.T 与 Class<?>. Object类 和 Class类. object.getClass() 和 Object.class : ...

  2. Java中泛型的使用

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言 一.概述 二.泛型分类 1.泛型类 2.泛型接口 3.泛型方法 3.1 泛型方法的基本用法 参考文档 前言 提示:这里 ...

  3. Java中泛型总结(全面)

    参考资料: 书:Java编程思想 博客: https://blog.csdn.net/wang__qin/article/details/81415223 https://blog.csdn.net/ ...

  4. Java中泛型的各种使用

    Java中的泛型的使用: 1.普通的泛型使用在使用类的时候后面的<>中的类型就是我们确定的类型.public class MyClass1<T> {//此处定义的泛型是Tpri ...

  5. 【转载】java中泛型使用详解

    引入 Type接口 Class类 Method类 Field类 ParameterizedType接口 TypeVariable接口 类中定义泛型变量 方法中定义泛型变量 方法中泛型参数和泛型返回值 ...

  6. Java中注解学习系列教程-2

    简介 在上一篇文章中,我们讲解了:Java中注解的定义.JDK中内置注解.第三方注解.本文是注解系列教程中的第二篇.来看看今天主要内容:1:注解的分类2:元注解说明3:自定义注解声明一:注解的分类注解 ...

  7. Java中注解学习系列教程-1

    前言: 我们为什么要学习注解? 注解是我们的编程更简洁明了.spring boot的流行也带动了注解.spring boot中就使用了大量的注解来减少配置.我们在使用spring boot开发时候,感 ...

  8. Java中泛型的?和T的区别

    前言: jdk5.0后java提供了泛型,用大写字母表示,一般用T,表示是一个不确定的具体的类型. ?表示是一群不确定的具体的类型,但?是它们的父类. 正文:?和T的区别 T:代表一种类型. ?:通配 ...

  9. Java中泛型的使用场景

    泛型: 泛型是JDK 1.5的一项新特性,它的本质是参数化类型(Parameterized Type)的应用,也就是说所操作的数据类型被指定为一个参数,在用到的时候在指定具体的类型.这种参数类型可以用 ...

最新文章

  1. 脑电信号预处理--去趋势化(Detrended fluctuation analysis)
  2. 记一次被DDoS敲诈的历程
  3. springmvc学习笔记--ueditor和springmvc的集成
  4. 2017西安交大ACM小学期数论 [等差数列]
  5. Linux下CMAKE编译jsoncpp,使用CMake引入jsoncpp
  6. Django Web实现动态三级联动
  7. 内联元素转化为内联块元素的一些小细节
  8. 深入解析字符串的比较方法:“==”操作符;String.Equals方法;String.Compare方法;String.CompareOrdinal方法。...
  9. android:AdapterView.OnItemClickListener
  10. 运维小知识---If you insist running as root, then set the environment variable RUN_AS_USER=root...
  11. 渗透测试-SQL注入之宽字节注入
  12. java获取指定时间为第几周_Java8根据一年中的第几周获得Monday
  13. 面试和谈薪技巧及如何避开常见的陷阱
  14. CAN(Controller Area Network)网络通信简介
  15. 阿里巴巴引入字体图标的第二种方法:
  16. java 通过User-Agent来判断是否是移动浏览器
  17. 网络偷窥者很多,如何消除上网的浏览痕迹?
  18. 互联网公司级别的简单划分(小白总结)
  19. 开源免费录屏和直播软件OBS Studio教程(02)
  20. 项目文档编制-招标书

热门文章

  1. android 名片识别 简书,iOS 自己实现 名片识别 三 图片处理
  2. 通域消化内镜Android患者版,市中心医院消化内科Ⅰ病区开创超声内镜治疗新领域...
  3. shell 字典_腾讯T4周末不陪对象,就为了手打这份shell编程笔记
  4. JAVA进阶教学之(foreach)
  5. devtools的ctrl加r_Chrome DevTools调试技巧
  6. cnn生成图像显著图_基于CNN与图像前背景分离的显著目标检测
  7. Java技术知识点的一些总结
  8. 文本编辑器查看 cprintf颜色_实战PyQt5: 028-纯文本编辑控件QPlainTextEdit
  9. python自动输入账号密码_Python如何基于selenium实现自动登录博客园
  10. mysql scws_apache+mysql+php+scws+myft_scws编译安装全程记录