泛型

泛型:可以在类或方法中预支地使用未知的类型。

一般在创建对象时,将未知的类型确定具体的类型。当没有指定泛型时,默认类型为Object类型。

使用泛型的好处

<1>将运行时期的ClassCastException,转移到了编译时期变成了编译失败。

<2>避免了类型强转的麻烦。

泛型是数据类型的一部分,我们将类名与泛型合并一起看做数据类型。

泛型的定义与使用

我们在集合中会大量使用到泛型,这里来完整地学习泛型知识。

泛型,用来灵活地将数据类型应用到不同的类、方法、接口当中。将数据类型作为参数进行传递。

定义和使用含有泛型的类

定义格式:

修饰符 class 类名 { }

例如,API中的ArrayList集合:

泛型在定义的时候不具体,使用的时候才变得具体。在使用的时候确定泛型的具体数据类型。

class ArrayList{ public boolean add(E e){ } public E get(int index){ } .... }

使用泛型: 即什么时候确定泛型。

在创建对象的时候确定泛型

例如, ArrayList list = new ArrayList();

此时,变量E的值就是String类型,那么我们的类型就可以理解为:

class ArrayList{ public boolean add(String e){ } public String get(int index){ } ... }

再例如, ArrayList list = new ArrayList();

此时,变量E的值就是Integer类型,那么我们的类型就可以理解为:

class ArrayList { public boolean add(Integer e) { } public Integer get(int index) { } ... }

含有泛型的方法

定义格式:

修饰符  返回值类型 方法名(参数){ }

含有泛型的接口

定义格式:

修饰符 interface接口名 { }

定义类时确定泛型的类型

此时,泛型E的值就是String类型。

始终不确定泛型的类型,直到创建对象时,确定泛型的类型

泛型通配符

泛型通配符

当使用泛型类或者接口时,传递的数据中,泛型类型不确定,可以通过通配符>表示。但是一旦使用泛型的通配符后,只能使用Object类中的共性方法,集合中元素自身方法无法使用。

通配符基本使用

泛型的通配符:不知道使用什么类型来接收的时候,此时可以使用?,?表示未知通配符。

此时只能接受数据,不能往该集合中存储数据。

泛型不存在继承关系 Collection list = new ArrayList();这种是错误的。

通配符高级使用----受限泛型

之前设置泛型的时候,实际上是可以任意设置的,只要是类就可以设置。但是在JAVA的泛型中可以指定一个泛型的上限和下限。

不能使用泛型的形参创建对象_数据类型之----泛型相关推荐

  1. java 泛型和类型擦除_关于Java泛型和擦除

    java 泛型和类型擦除 "编译期间擦除泛型"是常识(好吧,类型参数和实参实际上是被擦除的). 这是由于"类型擦除"而发生的. 但这是错误的,正如许多开发人员所 ...

  2. java泛型有什么用_什么叫泛型?有什么作用?

    一.什么是泛型? Java泛型设计原则:只要在编译时期没有出现警告,那么运行时期就不会出现ClassCastException异常. 泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊 ...

  3. 下列关于java泛型的说法正确_下列关于泛型的说法不正确的一项是:( )_学小易找答案...

    [简答题]请将审计实训任务最终的完成情况拍照上传,注意页面上要有自己的名字. [其它]找出点.线.面.体,不同的立体造型各3种,并注明它们材料.颜色.特点.表达的效果等.制作成PPT. [其它]作业: ...

  4. java泛型一定用包装类_你不知道的基本数据类型和包装类

    你不知道的基本数据类型和包装类 基本数据类型 Java 基本数据按类型可以分为四大类:布尔型.整数型.浮点型.字符型,这四大类包含 8 种基本数据类型.布尔型:boolean 整数型:byte.sho ...

  5. java泛型 例子_关于 Java 泛型的一些有趣的例子

    有以下的代码: 1 try{2 ArrayList lstA = new ArrayList();3 ArrayList lstB = new ArrayList();4 5 //ArrayList ...

  6. java实现泛型检索_高级Java泛型:检索泛型类型参数

    java实现泛型检索 在JDK5中引入Java泛型之后, Java泛型Swift成为许多Java程序的组成部分. 但是,乍一看似乎很简单的Java泛型,程序员很快就会迷失此功能. 大多数Java程序员 ...

  7. java 获取泛型_聊聊Java泛型擦除那些事

    >版权申明]非商业目的注明出处可自由转载 博文地址:https://blog.csdn.net/ShuSheng0007/article/details/89789849 出自:shushen ...

  8. Java:高级之泛型概念引入,泛型可以设置多个类型参数,泛型继承和泛型接口实现,限制泛型可用类型,泛型通配的方式,泛型方法,泛型方法限制泛型可用类型

    目录页         泛型简介         泛型类         限制泛型可用类型         类型通配声明         泛型方法 问题引入 如果我们需要产生多个对象,每个对象的逻辑完 ...

  9. 一文带你看懂java 泛型,史上最全面的泛型教学啦。

    认真看这篇文章,保证你们对泛型又有新的理解,如果没有的话,请顺着网线来打我呀. 概述 引用下百度百科的回答 泛型是程序设计语言的一种特性.允许程序员在强类型程序设计语言中编写代码时定义一些可变部分,那 ...

最新文章

  1. 【margin和padding的区别】
  2. 《Apache Flink官方文档》 Apache Flink介绍
  3. 【Linux】开源分布式存储系统:GlusterFS
  4. DataUml Design 教程6-DataUML Design 1.1版本号正式公布(支持PD数据模型)
  5. SP2010开发和VS2010专家食谱--第二章节--工作流
  6. 包含JS交互的混淆出错
  7. 公众号 多服务器配置_多领国微信官方公众号在线
  8. 霍兰德SC型如何选专业?霍兰德职业兴趣测试
  9. python做数学计算器_python作为计算器 数学用法
  10. day10-函数基础总结
  11. 第七章软件结构的健壮性——健壮性与正确性
  12. 300元内,此耳机是首选。不亏千人好评,对的起你的耳朵。
  13. 手机计算机数字游戏怎么玩,计算器游戏攻略
  14. 知网下载的PDF论文,如何加目录的方法
  15. Ubuntu18.04 安装完成后的开发配置
  16. c# propertyGrid下拉选项
  17. TreeSet and TreeMap
  18. u-boot scsi sata源码解析
  19. 202012-当我谈跑步时我谈些什么
  20. 阿里云掌门人王坚:中国互联网公司进入了下半场,不代表互联网也进入了下半场

热门文章

  1. java 联合_如何在java中进行联合,相交,区分和反向数据
  2. 吴恩达《机器学习》第九章:神经网络的学习
  3. 花书+吴恩达深度学习(十九)构建模型策略(训练模型顺序、偏差方差、数据集划分、数据不匹配)
  4. SpringBoot App Registers UNKNOWN with Eureka in Brixton SR3
  5. python接口自动化(二十二)--unittest执行顺序隐藏的坑(详解)
  6. android 3.0 m3u8,在Android中播放m3u8视频
  7. 怎样将Redis以本地服务方式进行启动?
  8. 解决easyExcel和poi版本冲突问题
  9. linux gfs文件系统,Linux环境下使用GFS文件系统
  10. EMC-- DFC --Sessions and Session Managers