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

2021-11-24 16:33:13 浏览数 (2)

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

背景

日常我们开发时,我们会遇到各种各样的奇奇怪怪的问题(踩坑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"来表示泛型。

本文声明:

本作品由 cn華少 采用 知识共享署名-非商业性使用 4.0 国际许可协议 进行许可。

0 人点赞