美文网首页java 基础
java基础(五)-对泛型的理解

java基础(五)-对泛型的理解

作者: NullPoint3Exce | 来源:发表于2018-07-03 18:05 被阅读0次

定义:编写的代码可以被不同的对象类型所重用。
泛型的本质是参数化类型。所操作的数据类型被指定为一个参数。
比如:集合类 linkedlist

出现:有许多原因促成了泛型的出现,而最引人注意的一个原因,就是为了创建容器类。

泛型好处:
类型安全:提高java程序的类型安全,编译时期就可以检查出类型不正确导致的类型转换异常,消除强制类型转换。

泛型有三种形式:泛型类、泛型方法、泛型接口

泛型类:未知类型应用于整个类的时候,可以使用泛型类。

class DataHolder<T>{
    T item;
    
    public void setData(T t) {
        this.item=t;
    }
    
    public T getData() {
        return this.item;
    }
}

泛型方法:当未知类型值应用于方法的时候,可以使用泛型方法,类型的定义要放到返回类型或者void的前面。

  /**
     * 泛型方法
     * @param e
     */
    public <E> void PrinterInfo(E e) {
        System.out.println(e);
    }

泛型接口:类似于泛型类

public interface Generator<T> {
    T next();
}

泛型的通配符:

<?> 无限制通配符
<? extends E> extends 关键字声明了类型的上界,表示参数化的类型可能是所指定的类型,或者是此类型的子类
<? super E> super 关键字声明了类型的下界,表示参数化的类型可能是指定的类型,或者是此类型的父类

泛型的类型擦除:

当编译器对带有泛型的java代码进行编译时,它会去执行类型检查和类型推断,然后生成普通的不带泛型的字节码,这种普通的字节码可以被一般的 Java 虚拟机接收并执行,这在就叫做 类型擦除(type erasure)。

擦除的实现原理:

Java 编辑器会将泛型代码中的类型完全擦除,使其变成原始类型。
当然,这时的代码类型和我们想要的还有距离,接着 Java 编译器会在这些代码中加入类型转换,将原始类型转换成想要的类型。这些操作都是编译器后台进行,可以保证类型安全。
总之泛型就是一个语法糖,它运行时没有存储任何类型信息。

相关文章

  • java基础(五)-对泛型的理解

    定义:编写的代码可以被不同的对象类型所重用。泛型的本质是参数化类型。所操作的数据类型被指定为一个参数。比如:集合类...

  • Java基础(一)

    Java要点1 JAVA基础 1.对抽象、继承、多态的理解 2.泛型的作用及使用场景 1.Java泛型是JDK1....

  • Java 泛型

    java 泛型 很多朋友对java的泛型不是很理解,很多文章写的已不是很清楚,这篇博客对java泛型进行 一个总结...

  • java 泛型

    很多朋友对Java的泛型不是很理解,很多文章写的已不是很清楚,这篇博客对java泛型进行 一个总结。 泛型的转换:...

  • 第二十八课:泛型

    泛型出现之前 泛型出现之后 Java深度历险(五)——Java泛型

  • 泛型

    java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一Java泛型深入理解加泛型面试数组的协变性与范型的不可变性

  • Java 泛型擦除原理

    问:请比较深入的谈谈你对 Java 泛型擦除的理解和带来的问题认识? 答:Java 的泛型是伪泛型,因为在编译期间...

  • 面试要点(先学着)

    1.Java 1.1 Java基础 对抽象、继承、多态的理解 泛型的作用及使用场景 枚举的特点及使用场景 线程sl...

  • 泛型琐碎之泛型上下限

    泛型的命名规范 为了更好地去理解泛型,我们也需要去理解java泛型的命名规范。 为了与java关键字区别开来,ja...

  • Java 泛型

    导读 移动开发知识体系总章(Java基础、Android、Flutter) 为什么会有泛型? 泛型类 泛型方法 泛...

网友评论

    本文标题:java基础(五)-对泛型的理解

    本文链接:https://www.haomeiwen.com/subject/csejuftx.html