0
点赞
收藏
分享

微信扫一扫

基于SpringBoot的线上日志阅读器

以沫的窝 2023-05-03 阅读 82

Java泛型这个特性是从JDK 1.5才开始加入的,因此为了兼容之前的版本,Java泛型的实现采取了“伪泛型”的策略,即Java在语法上支持泛型,但是在编译阶段会进行所谓的“类型擦除”(Type Erasure),将所有的泛型表示(尖括号中的内容)都替换为具体的类型(其对应的原生态类型),就像完全没有泛型一样。

原始类型 就是擦除去了泛型信息,最后在字节码中的类型变量的真正类型。

什么是泛型,有什么作用?

泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。


与非泛型代码相比,使用泛型有三大优点:
更健壮(在编译时进行更强的类型检查)、
更简洁(消除强转,编译后自动会增加强转)、
更通用(代码可适用于多种类型)* 适用于多种数据类型执行相同的代码(代码复用)

什么是类型擦除机制?

Java编译器中

先检查代码中泛型的类型(类型检查就是编译时完成的),

然后在进行类型擦除,

再进行编译。

类型擦除的具体步骤?

Java编译器是通过先检查代码中泛型的类型,然后在进行类型擦除,再进行编译。

如何证明类型的擦除呢? 

 如何理解泛型的编译期检查?

如何理解基本类型不能作为泛型类型?

如何理解泛型类型不能实例化?

泛型数组:能不能采用具体的泛型类型进行初始化?

泛型数组:如何正确的初始化泛型数组实例?

如何理解泛型类中的静态方法和静态变量?

如何理解异常中使用泛型?

List 与 List<?>有什么区别?

举报

相关推荐

0 条评论