java入坑之泛型

这篇具有很好参考价值的文章主要介绍了java入坑之泛型。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、泛型入门

1.1基础概念

Java泛型是JDK 5中引入的一个新特性,它提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型

java入坑之泛型,java,开发语言

java入坑之泛型,java,开发语言

泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这意味着你可以使用一套代码来处理多种不同类型的数据

1.2JDK中自带的泛型类和用法

java入坑之泛型,java,开发语言

二、自定义泛型设计

2.1 泛型类

java入坑之泛型,java,开发语言

ArrayList<E>,E表示元素Element;
HashMap<K,V>, ,K表示Key,V表示Value;
自定义泛型变量常用T,T表示Template。

 2.2泛型类的调用

java入坑之泛型,java,开发语言

 2.3泛型方法

java入坑之泛型,java,开发语言

2.4泛型接口

java入坑之泛型,java,开发语言

三、泛型类型限定

java入坑之泛型,java,开发语言

3.1泛型类的继承 

java入坑之泛型,java,开发语言

3.2上限界定符

上限界定符,Pair<? extends S> java入坑之泛型,java,开发语言

 3.3下限界定

java入坑之泛型,java,开发语言

3.4泛型PECS原则

- Producer Extends, Consumer Super


-要从泛型类读取类型T的数据,并且不能写入,可以使用?extends 通配符;(Producer Extends,泛型类是生产者,往外输出东西)


-如果要向泛型类写入类型T的数据,并且不需要读取,可以使用?super 通配符;(Consumer Super,泛型类是消费者,往内增加东西)


-如果既想写入又想读出,那就不用通配符

3.5无限定泛型

java入坑之泛型,java,开发语言

四、泛型实现的本质和约束

4.1类型擦除

JDK的版本是向后兼容的即低版本的class文件可以在高版本的JDK上运行
因此,JVM里面没有泛型对象,而是采用类型擦除技术,只有普通的类和方法

4.2无限定的

 4.3有限定的

4.4自动转换(自动桥方法)

 4.5泛型的约束

java入坑之泛型,java,开发语言

五、Java类型协变和逆变 

5.1面向对象语言

java入坑之泛型,java,开发语言

 5.2JAVA数组

java入坑之泛型,java,开发语言文章来源地址https://www.toymoban.com/news/detail-683251.html

5.3java泛型

java入坑之泛型,java,开发语言

5.4复合 

到了这里,关于java入坑之泛型的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 从零开始学习 Java:简单易懂的入门指南之泛型及set集合(二十二)

    1.1泛型概述 泛型的介绍 ​ 泛型是JDK5中引入的特性,它提供了编译时类型安全检测机制 泛型的好处 把运行时期的问题提前到了编译期间 避免了强制类型转换 泛型的定义格式 类型: 指定一种类型的格式.尖括号里面可以任意书写,一般只写一个字母.例如: 类型1,类型2…: 指定多

    2024年02月09日
    浏览(29)
  • Go 泛型之泛型约束

    目录 Go 泛型之泛型约束 一、引入 二、最宽松的约束:any 三、支持比较操作的内置约束:comparable 四、自定义约束 五、类型集合(type set) 六、简化版的约束形式 七、约束的类型推断 八、小结 虽然泛型是开发人员表达“通用代码”的一种重要方式,但这并不意味着所有泛型

    2024年02月04日
    浏览(28)
  • C++之泛型算法

    大多数算法在头文件algorithm中,在头文件numeric中定义了一组数值泛型算法。理解算法最基本的方法就是了解他们是否读取元素,改变元素,或是重排元素顺序 使用STL算法经常需要使用函数对象和函数适配器,所以需要#include 所有算法都被设计用来处理一个或多个iterator区间,

    2024年02月03日
    浏览(26)
  • TypeScript 进阶之泛型

    避免代码重复和创建可重用类型是编写干净代码的重要部分。 将所有类型属性都设置为可选 Required 与 Partial 相反。它构造一个类型,其中需要该类型的所有属性。它可用于确保没有可选属性出现在类型中。 多属性的对象中摘取某些属性。 键可以是字符串文字或字符串文字的

    2024年01月23日
    浏览(28)
  • 30天拿下Rust之泛型

    概述         在Rust语言中,泛型是一种强大的工具,它允许我们编写可复用且灵活的代码。通过泛型,我们可以创建适用于多种类型的数据结构和函数,而无需为每种类型都重复编写相同的逻辑。在Rust中,泛型通过指定类型参数来实现,这些类型参数会在编译时被具体类

    2024年03月17日
    浏览(40)
  • 选择排序算法之泛型优化

    工作原理: 每一次从待排序的数据元素中选中最小的一个元素,然后,再从剩余未排序元素中继续寻找最小元素,将2个元素交换位置,就达到了已排序的元素一直是从小到大了。 这个算法的时间复杂度为O(n²),空间复杂度为O(1)。 当然,为了匹配多种类型的对象,可以使用

    2024年02月06日
    浏览(31)
  • C#(六十二)之泛型的约束

    类型约束 基类约束有两个重要的目的。 1:它允许在泛型类中使用有约束指定的基类成员。 2:确保只能使用支持指定基类或派生类的类型实例。 约束是使用 where 上下文指定的。 下表列出了五种类型的约束: 约束 说明 T:struct 类型参数必须是值类型。可以指定除

    2024年02月17日
    浏览(31)
  • Rust之泛型、trait与生命周期

    泛型是具体类型或其他属性的抽象替代。在编写代码时,可以直接描述泛型的行为,或者它与其他泛型产生的联系,而无须知晓它在编译和运行代码时采用的具体类型。 们可以在声明函数签名或结构体等元素时使用泛型,并在随后搭配不同的具体类型来使用这些元素。 当使

    2024年02月13日
    浏览(24)
  • 拉人入坑之,在Linux系统下运行Android系统之Rcok5B篇

    应用背景,Linux应用匮乏,软件少的可怜,软件也丑的要死, 很早就有了这样的需求,早在2017年的时候就已经实现了,在deepin上直接安装运行Android软件,并正常运行,机理,好像是xDroid 现在入手了一块rock5B,怎么也得运行一下Android系统,开软件,然后就有了下文 本文的方案是GitHub - remote-

    2024年02月05日
    浏览(23)
  • Rust之泛型、特性和生命期(四):验证有生存期的引用

      Windows 10 Rust 1.71.0   VS Code 1.80.1 这里继续沿用上次工程rust-demo 生存期是我们已经在使用的另一种泛型。生存期不是确保一个类型具有我们想要的行为,而是确保引用在我们需要时有效。 我们在第4章“引用和借用”一节中没有讨论的一个细节是,Rust中的每个引用都有一个生

    2024年02月16日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包