泛型讲解

简介: 本章讲解了什么是泛型以及泛型擦除相关的知识点

一、什么是泛型?

  • Java泛型是JDK 5中引⼊的⼀个新特性, 允许在定义类和接口的时候使⽤类型参数。声明的类型参数在使⽤时⽤具体的类型来替换。
  • 泛型最⼤的好处是可以提⾼代码的复⽤性。以List接口为例,我们可以将String Integer等类型放⼊List中, 如不⽤泛型, 存放String类型要写⼀个List接口, 存放Integer要写另外⼀个List接口, 泛型可以很好的解决这个问题。

二、泛型擦除

泛型擦除是Java中的一个特性,在编译阶段将所有泛型信息擦除掉,将泛型类型变为原始类型。这是为了兼容Java的泛型与旧版本的代码。擦除后,泛型类型参数变为其上界类型或Object类型

泛型擦除的例子如下:

// 泛型类publicclassExample<T> {
privateTvalue;
publicExample(Tvalue) {
this.value=value;
    }
publicTgetValue() {
returnvalue;
    }
}
// 使用泛型类Example<Integer>example=newExample<>(10);
Integervalue=example.getValue();  // 在编译后,相当于 Integer value = (Integer) example.getValue();

在编译阶段,Example<Integer>会被擦除为ExampleT会被擦除为Object。因此,在运行时,example.getValue()的返回值会被自动转换为Integer类型。

需要注意的是,泛型擦除只存在于编译阶段,在运行时并不会出现泛型类型。如果需要在运行时获取泛型类型信息,可以使用反射等方式来实现。

相关文章
|
6月前
|
Java
|
6月前
|
安全 算法 Java
深入理解泛型
深入理解泛型
|
安全 Java 编译器
泛型的使用
今天和考上研究生的老同学聊了一会,知晓他在重新学习Java,并且学到了泛型这个地方,所以今天来总结一下泛型这个地方。
|
安全 Java 编译器
第10章 泛型
泛型是什么,以及泛型怎么用。
120 0
|
算法 安全 Java
|
安全 Java 编译器
你了解泛型吗?
面向对象编程中,多态算是一种泛化机制。你可以将方法的参数类型设置为基类,那么该方法就可以接受从这个基类中导出的任何类作为参数,这样的方法将会更具有通用性。此外,如果将方法参数声明为接口,将会更加灵活。
|
存储 Java 编译器
一文带你玩转“泛型“
一文带你玩转“泛型“
154 0
一文带你玩转“泛型“
|
Java 编译器 安全
关于泛型,你可能不知道的事儿
型没有其看起来那么深不可测,它并不神秘与神奇。泛型是 Java 中一个很小巧的概念,但同时也是一个很容易让人迷惑的知识点,它让人迷惑的地方在于它的许多表现有点违反直觉。
1590 0
|
安全 Java 编译器
java基础巩固-详解泛型
java泛型(generics)为jdk5引入的新特性,泛型提供了编译时类型安全检测机制,可以在编译时检测到非法的类型。 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。
1398 0