广告
返回顶部
首页 > 资讯 > 后端开发 > JAVA >深入学习java之泛型
  • 621
分享到

深入学习java之泛型

java入门java泛型 2017-12-30 07:12:20 621人浏览 才女
摘要

概念:泛型,即“参数化类型”。就是将原来具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。本质:为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不

概念:泛型,即“参数化类型”。就是将原来具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。

本质:为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

三种使用方式:泛型类、泛型接口、泛型方法

类型通配符:

1)类型通配符一般是使用?代替具体的类型参数。例如List 在逻辑上是List,List等所有List<具体类型实参>的父类。

2)类型通配符上线通过形如List来定义,如此定义就是通配符泛型值接受Number及其下层子类类型。

泛型提供了编译时类型安全监测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。比如我们要写一个排序方法,能够对整数数组字符串数组甚至其他任何类型的数组进行排序,我们就可以使用Java泛型。

1.泛型方法

你可以写一个泛型方法,该方法在调用时可以接收不同类型的参数。根据传递给泛型方法的参数类型,编译器适当地处理每一个方法调用。

// 泛型方法 printArray 
     public static < E > void printArray( E[] inputArray )
     { 
         for ( E element : inputArray ){ 
             System.out.printf( "%s ", element );
         }
     }

1)<?extend T> 表示该通配符所代表的类型是T类型的子类。

2) 表示该通配符所代表的类型是T类型的父类。

2.泛型类

泛型类的声明和非泛型类的声明类似,除了在类名后面添加类型参数声明部分。和泛型方法一样,泛型类的类型参数声明部分也包含一个或多个类型参数,参数间用逗号隔开。一个泛型参数,也被称为一个类型变量,是用于指定一个泛型类型名称的标识符。因为它们接受一个或多个参数,这些类被称为参数化的类或参数化的类型。

public class Box {
     private T t;
     public void add(T t) {
         this.t = t;
     }
     public T get() {
         return t;
 }

3.类型擦除

Java中的泛型基本上都是在编译器这个层次来实现的。在生成的Java字节码中是不包含泛型中的类型信息的。使用泛型时加上的类型参数,会被编译器在编译时去掉,这个过程就称为类型擦除。如在代码中定义的List和List等类型,在编译之后都会变成List。JVM看到的只是List,而由泛型附加的类型信息对JVM来说时不可见的。类型擦除的基本过程也比较简单,首次是找到用来替换类型参数的具体类,这个具体类一般是Object。如果指定了类型参数的上界的话,则使用这个上界,把代码中的类型参数都替换成具体类。

本文来自 java入门 栏目,欢迎学习

--结束END--

本文标题: 深入学习java之泛型

本文链接: https://www.lsjlt.com/news/2832.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 深入学习java之泛型
    概念:泛型,即“参数化类型”。就是将原来具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。本质:为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不...
    99+
    2017-12-30
    java入门 java 泛型
  • Java中泛型学习之细节篇
    目录简介正文什么是类型参数为啥要有泛型泛型的演变史类型擦除泛型的应用场景通配符限定动态类型安全检查总结简介 泛型的作用就是把类型参数化,也就是我们常说的类型参数 平时我们接触的普通方...
    99+
    2022-11-13
  • 深入学习java之transient关键字
    对于transient这个关键字或许很陌生基本没怎么用过,但是transient关键字在java中却起到了不可或缺的地位!在学习java的过程中transient关键字少见的原因其实离不开它的作用:transient关键字的主要作用就是让某...
    99+
    2021-04-10
    java入门 java transient 关键字
  • 深入理解java泛型Generic
    目录一、背景二、泛型概念三、泛型类3.1 定义与调用3.2 注意3.3 使用3.4 泛型类的继承3.4.1 子类也是泛型类3.4.2 子类不是泛型类四、泛型接口4.1 定义4.2 使...
    99+
    2022-11-12
  • socket.io学习教程之深入学习篇(三)
    前言 socket.io提供了基于事件的实时双向通讯,本文深入的介绍了socket.io,下面来看看详细的内容吧。 静态文件 socket.io默认情况下会通过socket.io-client包提供soc...
    99+
    2022-06-04
    教程 socket io
  • java深入学习之static静态代码块
    静态代码块static可以修饰属性、方法、内部类、代码块。静态代码块在类加载时就调用, 而且只执行一次, 并且优先于各种代码块以及构造函数。有一个地方的静态代码被使用,那么所有的静态代码块都会被调用。相关视频教程推荐:java免费视频教程示...
    99+
    2015-02-26
    java入门 java static 静态代码块
  • 深入学习SpringCloud之SpringCloud简介
    Spring Cloud是什么? SpringCloud官网:http://spring.io Spring Cloud是一个一站式的开发分布式系统的框架,为开发者提供了一系列的构建...
    99+
    2022-11-12
  • java入门学习之路
    java是面向对象的编程,个人觉得记忆比较重要。第一阶段java基础部分unix开发环境熟练掌握开发中常用的操作系统linux的安装及使用:掌握文件系统、网络、用户管理方法:能熟练使用vi和vim进行文件编...
    99+
    2022-10-18
  • sqlmap深入学习
    整理下关于sql注入的资料链接学习链接:part1:http://www.freebuf.com/sectool/77948.htmlpart2:http://www.freebuf.com/sectool...
    99+
    2022-10-18
  • redis深入学习
    Redis持久化 官方文档: https://redis.io/topics/persistence 1.RDB和AOF优缺点 RDB: 可以在指定的时间间隔内生成数据集的时间点快照,把当前内存里的状态快照到磁盘上 优点: 压缩格...
    99+
    2015-11-22
    redis深入学习
  • 【MySQL系列】深入学习数据类型
    「前言」文章内容大致是数据库的数据类型。 「归属专栏」MySQL 「主页链接」个人主页 「笔者」枫叶先生(fy) 目录 一、数据类型分类二、数值类型2.1 tinyint类型2.2 bit类型2.3 小数类型2.3.1...
    99+
    2023-08-16
    mysql 学习 android
  • 理解深度学习之深度学习简介
    机器学习 在吴恩达老师的课程中,有过对机器学习的定义: ML:<P T E> P即performance,T即Task,E即Experience,机器学习是对一个Task...
    99+
    2022-11-12
  • Python深度学习 深度学习入门基于
    《Python深度学习》由Keras之父、现任Google人工智能研究员的弗朗索瓦•肖莱(François Chollet)执笔,详尽介绍了用Python和Keras进行深度学习的探索实践,涉及计算机视觉、自然语言处理、生成式模型等应用。书...
    99+
    2023-01-31
    深度 入门 Python
  • 深入学习Golang并发编程必备利器之sync.Cond类型
    目录1. sync.Cond 的基本概念1.1 条件变量1.2 互斥锁1.3 条件变量的实现原理2. sync.Cond 的基本用法2.1 创建 sync.Cond 对象2.2 等待...
    99+
    2023-05-18
    Golang sync.Cond原理 Golang sync.Cond使用 Golang sync.Cond
  • 深入了解Java核心类库--泛型类
    目录1.1 泛型的使用1.1.1 泛型类1.1.2 泛型接口1.1.3 泛型方法1.1.4 tips 1.2 泛型限制类型1.3 通配符?1.3.1 上界限定1.3.2 下...
    99+
    2022-11-12
  • 深入浅出理解Java泛型的使用
    目录一、泛型的意义二、泛型的使用三、自定义泛型类1.关于自定义泛型类、泛型接口:2.泛型在继承方面的体现3.通配符的使用一、泛型的意义 二、泛型的使用 1.jdk 5.0新增特性 ...
    99+
    2022-11-12
  • CDB/PDB深入学习
    改变PDB大小SQL> show pdbs ...
    99+
    2022-10-18
  • scrapy深入学习----(3)
    最新版本 0.10.我们可以通过scrapy命令行工具来控制Scrapy, 这里我们使用了“Scrapy tool”这么一个词,用来区分他们的子命令,那些通常我们称为 “commands”,或者 “Scrapy commands”.处于各种...
    99+
    2023-01-31
    scrapy
  • Java深入浅出讲解泛型与包装类
    目录1、什么是泛型2、泛型的语法3、泛型的上界4、通配符(1)通配符的上界(2)通配符的下界5、包装类1、什么是泛型 泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指...
    99+
    2022-11-13
  • 深入浅析java中集合泛型的本质
    深入浅析java中集合泛型的本质?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1、初始化两个集合,一个使用泛型,一个不使用ArrayList list1 = new Array...
    99+
    2023-05-31
    java 集合泛型 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作