Skip to main content

泛型

· 2 min read

对于没有泛型的情况 比如

max(a : int , b:int){
xxx
}

入参是a , b ,这两个参数的类型的约束是 int , 也就是这个函数的约束是 max(int , int) 泛型的语义就是:

max(a :<T> , b:<T>){

}

这个约束是什么?

约束变成 max(<T> ,<T>)

作用: 我们的约束变更加范化了,这个如果按照编译原理或者解空间来说,我们可选的映射更多了.

泛型的作用:和类的继承差不多,因为继承既是优点也是缺点.

泛型这个约束也是既有优点也有缺点,泛型的优点是更加接近无类型类型,所以缺点也是大家会滥用无类型的内容

就像继承一样,其实很多继承是没有必要的,或者重构的继承非常难.

说到底,如果我们写了一个通用的轮子,如果和多地方用到了这个轮子,那么如果这个轮子经常更改,就需要考虑用到这个轮子的相关代码是不是要兼容

如果这个轮子被共用的地方少,那么就不用兼容那么多

所以我们抽象就比如面临改动频繁的缺点