`
zhouchaofei2010
  • 浏览: 1085723 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java泛型总结2-1之核心概念

阅读更多
什么是泛型

泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法

 

泛型的优点

1、类型安全

2、前后兼容

3、泛化代码,代码可以更多的重复利用

4、性能较高,用GJ(泛型JAVA)编写的代码可以为java编译器和虚拟机带来更多的类型信息,这些信息对java程序做进一步优化提供条件。

 

泛型的缺点

1 由于类型擦除,泛型代码中不能提供类型在运行时的操作,比如new  instanceOf 等 

2 不支持混型,C++通过模板和泛型支持混型,scala通过特质trait支持混型

3 泛型不是在java一开始就有的,是在java5.0加进去的,当把类型代码赋给旧代码时会造成类型信息丢失

 

泛型的工作原理:
  • 1、类型检查:在生成字节码之前提供类型检查
  • 2、类型擦除:所有类型参数都用他们的限定类型替换,包括类、变量和方法(类型擦除)
  • 3、如果类型擦除和多态性发生了冲突时,则在子类中生成桥方法解决
  • 4、如果调用泛型方法的返回类型被擦除,则在调用该方法时插入强制类型转换
泛型方法
边界处的动作(泛型的工作原理的两头部分,1和4)
在传入值的进行额外的编译期的类型检测,在传出值的时候,插入转型代码进行转型    
记住"边界就是发生动作的地方". 就是方法进入时和和方法返回值的时候
 
泛型的协变\ 逆变  
协变:<? extends T>  协变,协变后不能插入数据
逆变:<? super class>  协变的相反过程,可以插入数据,但不能协变
<T> 普通泛型,集合不能协变,插入的数据支持协变
 
桥方法(参考corejava8)
编译过程中,为了解决类型擦除和多态性发生了冲突的问题,于是编译器会在子类中生成一个合成的桥方法,该桥方法是一个父类的重写方法,在方法体中调用冲突的重载方法
8
0
分享到:
评论

相关推荐

    Java 基础泛型.pdf

    Java泛型概念 Java泛型是一种在编译时进行类型检查和类型推断的机制,它可以让我们编写更加通用、可重用的代码,提高了代码的可读性和可维护性,同时保证了类型安全。 Java泛型的核心思想是类型参数化,即在类、接口...

    Java核心技术卷一-完整书签-pdf

    第9版根据JavaSE7全面更新,同时修正了第8版中的不足,系统全面讲解Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强。 《Java核心技术·卷1:基础知识》共14章。第1章概述了Java语言与其他...

    Java核心技术 第12版 开发基础+高级特性 英文原版

    新版延续之前版本的优良传统,用数百个实际的工程案例,全面系统地讲解了Java语言的核心概念、语法、 重要特性、 开发方法。 着力让读者在充分理解Java语言和Java类库的基础上,灵活应用Java提供的高级特性,具体...

    java 核心编程 java

    《Java核心技术》出版以来一直畅销不衰,深受读者青睐,每个新版本都尽可能快地跟上Java开发工具箱发展的步伐,而且每一版都重新改写了部分内容,以便适应Java的最新特性。本版也不例外,它反映了Java SE 6的新特性...

    Java中高级核心知识全面解析(精华必看)

    一、Java (一). 基础 1.Java 基本功 1.1.Java 入门(基础概念与常识) 1.1.1.Java 语言有哪些特点? 1.1.2.关于 JVM JDK 和 JRE 最详细通俗的...1.2.7.Java泛型了解么?什么是类型擦除?介绍一下常用的通配符? ......

    JAVA 核心技术基础篇1

    全书共14章,包括Java基本的程序结构、对象与类、继承、接口与内部类、图形程序设计、事件处理、Swing用户界面组件、部署应用程序和Applet、异常日志断言和调试、泛型程序设计、集合以及多线程等内容。. 全书对Java...

    Java.In.A.Nutshell 7th Covers Java11.pdf

    第二部分是对核心概念和API的引用,它解释了如何在Java环境中执行真正的编程工作。 快速掌握语言详细信息,包括Java 9-11更改 使用基本的Java语法学习面向对象的编程 探索泛型,枚举,注释和lambda表达式 了解面向...

    基于TCP的服务器客户端程序设计.doc

    在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java 不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进 ...

    Java核心技术卷一基础知识第10版

    第10版根据Java SE 8全面更新,同时修正了第9版中的不足,系统全面讲解了Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强。  本书共14章。第1章概述Java语言与其他程序设计语言不同的性能;...

    《Java 核心技术 卷I 》第12版,涵盖Java17新特性(英文版)

    新版延续之前版本的优良传统,用数百个实际的工程案例,全面系统地讲解了Java语言的核心概念、语法、 重要特性、 开发方法。 着力让读者在充分理解Java语言和Java类库的基础上,灵活应用Java提供的高级特性,具体...

    Java核心技术.第9版.卷1.卷2.英文版

    第9版根据Java SE 7全面更新,同时修正了第8版中的不足,系统全面讲解Java语言的核心概念、语法、重要特性和开发方法。《Java核心技术·卷1:基础知识(原书第9版)》共14章。第1章概述了Java语言与其他程序设计语言...

    Java面向对象知识点梳理(思维导图)

    这个资源是一个Java面向对象知识点的思维导图,它涵盖了Java中面向对象编程的核心概念和重要知识点。导图中包含了类、对象、继承、多态、封装等基本概念,同时也包括了接口、抽象类、异常处理、泛型等高级特性。这个...

    Java面试题-基础和集合.docx

    通过面试题的逐一解答,读者可以了解到Java语言的一些核心概念,如面向对象的特性、线程安全、性能优化、泛型、自动装箱与拆箱等。此外,文件还详细解释了类型擦除的概念及其优势,以及深浅克隆的区别和实现方式。...

    javaswing程序源码-java-book:《Java编程:综合入门》一书的源代码

    进行概述,然后介绍数据类型、运算符和控制语句的基本概念,接着讲解该语言更复杂的特性,如类、方法、继承、接口、包、异常、多线程和泛型。 第二部分(第17~21章)介绍 Swing,首先对用 Swing 进行 GUI 编程进行...

    corejava.zip

    第10版根据Java SE 8全面更新,同时修正了第9版中的不足,系统全面讲解了Java语言的核心概念、语法、重要特性和开发方法,包含大量案例,实践性强。 本书共14章。第1章概述Java语言与其他程序设计语言不同的性能;第...

    Java核心技术 卷Ⅰ:基础知识 【中文】(第八版)

    Java核心技术 卷Ⅰ:基础知识 【中文】 第1章概述Java与其他程序设计语言不同的性能。解释这种语言的设计初衷,以及在哪些方 面达到了预期的效果。然后,简要叙述Java诞生和发展的历史。 第2章详细地论述如何下载和...

    Java面向对象知识点的思维导图

    这个资源是一个Java面向对象知识点的思维导图,它涵盖了Java中面向对象编程的核心概念和重要知识点。导图中包含了类、对象、继承、多态、封装等基本概念,同时也包括了接口、抽象类、异常处理、泛型等高级特性。这个...

Global site tag (gtag.js) - Google Analytics