美文网首页
知识分享之概念——程序中泛型的理解,什么是泛型?

知识分享之概念——程序中泛型的理解,什么是泛型?

作者: cn華少 | 来源:发表于2021-11-21 23:37 被阅读0次

知识分享之概念——程序中泛型的理解,什么是泛型?

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o(╯□╰)o),这个常见问题系列就是我日常遇到的一些问题的记录文章系列,这里整理汇总后分享给大家,让其还在深坑中的小伙伴有绳索能爬出来。
同时在这里也欢迎大家把自己遇到的问题留言或私信给我,我看看其能否给大家解决。

开发环境

  • 系统:windows10
  • 数据库:MariaDB

内容

百度百科上是这样描述泛型的

泛型程序设计(generic programming)是程序设计语言的一种风格或范式。泛型允许程序员在强类型程序设计语言中编写代码时使用一些以后才指定的类型,在实例化时作为参数指明这些类型。各种程序设计语言和其编译器、运行环境对泛型的支持均不一样。Ada、Delphi、Eiffel、Java、C#、F#、Swift 和 Visual Basic .NET称之为泛型(generics);ML、Scala 和 Haskell 称之为参数多态(parametric polymorphism);C++和 D称之为模板。具有广泛影响的1994年版的《Design Patterns》一书称之为参数化类型(parameterized type)。

我理解的泛型是用于我们在编写一个函数或者一个程序时想要让它能接受多种类型的入参时使用的一种范式。

假设我现在编写一个"冰箱",这个冰箱未来需要放入"苹果"这个类型的对象,还需要放入"草莓"这个类型的对象。
这时我的这个冰箱接口就需要既可以传参"苹果"又可以传参"草莓"。有的小伙伴可能会说我写上两个类型的参数,有需要时就用哪个参数呗,其实不然,我们的"冰箱"需要放入各种各样的东西,这时我们的参数是写不完的,或者写了很多后会浪费掉很大一部分的空传参和一些相关判定。
这时我们就需要一个类型来代表着未来某个时间时,我们再进行使用"冰箱"时再告知到底是什么类型。于是这里就诞生了泛型这个概念。

那在常见的程序中是如何体现的呢?
我们比较常用语言中通常使用"T"来表示泛型。

本文声明:
88x31.png
知识共享许可协议
本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

相关文章

  • 知识分享之概念——程序中泛型的理解,什么是泛型?

    知识分享之概念——程序中泛型的理解,什么是泛型? 背景 日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑o...

  • Java泛型与Kotlin泛型

    正文 本文主要列举Java泛型与Kotlin泛型的基本知识,以及两者的区别。 什么泛型 泛型程序设计是程序设计的一...

  • Java泛型-你可能需要知道这些

    本博文为Java泛型扫盲文,争取读完后能理解泛型并使用泛型。 1. 几个知识点 1.1 什么是泛型 泛型的本质是参...

  • Java泛型

    本文介绍的知识点 泛型是什么? 泛型的使用在反射中使用泛型在集合类中使用泛型 关于泛型擦除如何理解?如何避免泛型擦...

  • 三、TypeScript 泛型

    什么是泛型 理解:泛型就是在编译期间不确定类型(广泛之意思),在调用时,由程序员指定的泛型具体指向什么类型。泛型在...

  • JAVA范型<? extends __> <

    目录 一. 泛型概念的提出(为什么需要泛型)? 二.什么是泛型? 三.自定义泛型接口、泛型类和泛型方法 四.类型通...

  • 9.泛型(Thinking in java 学习九)

    多态算是一种泛化机制,但是拘泥于单继承体系,也会使程序受限太多。JavaSE5中提出了泛型的概念。 泛型概念:泛型...

  • 详解Java泛型之3——十分钟理解泛型擦除

    前面我们介绍了泛型以及通配符的基础概念,可以参考文章: 详解Java泛型之1——入门泛型必懂的知识点[https:...

  • JDK1.5后增加了泛型,那么为什么要有泛型呢?我们该如何自定义

    本篇主要讲解java泛型的理解、集合中简单使用泛型、自定义泛型结构(包括类、接口、方法)。 一、什么是泛型? 通俗...

  • java泛型背后是什么

    这一节主要讲的内容是java中泛型的应用,通过该篇让大家更好地理解泛型,以及面试中经常说的泛型类型擦除是什么概念,...

网友评论

      本文标题:知识分享之概念——程序中泛型的理解,什么是泛型?

      本文链接:https://www.haomeiwen.com/subject/jxdvtrtx.html