oracle和mql通配符区别,JavaSE_8系列博客——Java语言的特性(六)--泛型(1)--宏观把控...

为什么要引入泛型?

编译时更强大的类型检查。

如果代码违反类型安全性,则Java编译器将强类型检查应用于通用代码并发出错误。修复编译时错误比修复可能难以找到的运行时错误更容易。

消除类型转换,以及带来的拆装箱的操作。提高了程序的性能,编程更加容易。

使程序员能够实现通用算法

通过使用泛型,程序员可以实现对不同类型的集合进行工作的通用算法,可以自定义,并且类型安全且易于阅读。

什么是泛型

通俗来讲,泛型(通用类型)是一种将类型进行参数化的技术。参数化的意思,就是说让类型可根据传入的参数的值来发生动态变化。

易混概念

以下的名词说的都是一回事儿:

泛型=通用类型=类型参数化=参数化的类型=类型形参

注意区别:

1. 类型形参 不等于 形参

2. 类型通配符 不等于 泛型

有界限的泛型

设定类型形参的上限

其实,这个概念很简单。目的在于限制传入到类型形参中的实际类型,要么是上限类型,要么是该上限类型的子类。好处是:在泛型中能够充分利用面向对象中的多态的技术。使得在泛型中也能够使用协变的思想。

类型推断和菱形语法

什么是类型推断?其实,是为了简化咱们的编程复杂度,减轻程序员的编程工作。

它是Java编译器查看每个方法调用和相应声明的能力,以确定使调用适用的类型参数(或参数)。让推理算法确定参数的类型,如果可用,确定结果分配或返回的类型。最后,推理算法尝试找到适用于所有参数的最具体的类型。

例如:

class List {

static List nil() { ... };

static List cons(Z head, List tail) { ... };

E head() { ... }

}

//通过方法赋值的目标参数来自动推断泛型的类型

List l = List.nil();

//而不是显示的指定类型

//List l = List.nil();

//通过前面方法参数类型推断泛型的类型

List.cons(42, List.nil());

//而不是显示的指定类型

//List.cons(42, List.nil());

什么是菱形语法:

是JavaSE7之后,推出的新特性。其本质,也是和类型推断是一样的。它也是为了简化咱们的编程复杂度,减轻程序员的编程工作。

例如:

使用菱形语法前:

Map myMap = new HashMap();

使用菱形语法后:

Map myMap = new HashMap<>(); //注意后面的"<>"

泛型的实现原理

泛型和类型通配符

参考系列博客(三)

何时何地使用泛型?

如何使用泛型?

参考博客:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值