编程语言中高级特性:泛型

什么是泛型,为什么使用泛型

泛型:允许程序员在强类型程序设计语言中在类定义时不会设置类中的属性或方法参数的具体类型,而是在类实例化时(创建对象)再进行类型的定义,会在编译期检查类型是否错误。

使用泛型的目的

  • 可重用,不使用泛型通常相同功能的代码,根据不同传入的参数类型的多少,就的重复写多次。
  • 可扩展,可扩展不同的数据类型
  • 类型安全,实例化时需指定类型,如果使用object代替类型,那么类型未知可能会出现类型安全问题。
  • 效率更高,相比object代替方案,泛型不会出现强制类型转化等,通常我们说的装箱和拆箱过程,从而提高性能。
    注意,这了的目的是和不使用泛型,或者使用object(所有类的父类)代替类型来说的。

泛型的实现原理

泛型本质是将数据类型参数化,我们在定义类和方法时,不必使用一个或多个具体类型,而是在调用类和方法时再去指定具体类型。定义方法时,类型参数通常使用一个大写字母表示。

// 定义泛型
mylist<T>

// 使用泛型方法,一个方法可以适用于不同场景
mylist<int>
mylist<string>
mylist<MyClass>

如何使用泛型

泛型有三种使用方式,分别为:泛型类、泛型接口和泛型方法。

泛型类

public class 类名 <泛型类型1,...> {  

}

泛型接口

public interface 接口名称 <泛型类型1,...> {  

}

泛型方法

public <泛型类型> 返回类型 方法名(泛型类型 变量名) {

}

扩展阅读

C#泛型设计原理
JAVA泛型详解
Go 泛型使用和实现原理介绍
编程语言是如何实现泛型的

此处评论已关闭