`
zhouchaofei2010
  • 浏览: 1106373 次
  • 性别: 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泛型技术之发展

    本篇文章将深入探讨Java泛型的发展历程、核心概念以及其在实际开发中的应用。 1. **发展历程** - **早期版本的局限**:在Java泛型出现之前,程序员通常使用Object作为容器类(如ArrayList、HashMap等)的默认类型...

    Java泛型技术之发展.pdf

    本篇文章将深入探讨Java泛型的发展历程、核心概念以及其在实际开发中的应用。 1. **发展历程** Java泛型的引入是为了解决早期版本中类型转换频繁和潜在的ClassCastException问题。在Java泛型出现之前,集合框架...

    java 泛型入门 实例

    本篇文章将带你入门Java泛型,通过实例深入理解其核心概念。 1. **泛型的基本概念** - 泛型是一种允许在定义类、接口和方法时使用类型参数的机制。这使得代码可以在编译时期检查类型,避免了不必要的类型转换,并...

    [Java泛型和集合].(Java.Generics.and.Collections).文字版

    Java泛型和集合是Java编程语言中的核心特性,它们极大地提高了代码的类型安全性和可读性,同时也简化了集合操作。本资料 "[Java泛型和集合].(Java.Generics.and.Collections).Maurice.Naftalin&amp;Philip.Wadler....

    565.563.JAVA基础教程_泛型与File-为什么要使用泛型(565).rar

    在Java中,泛型和File类是两个重要的概念,对于提升代码的类型安全性、可读性和复用性起着至关重要的作用。 **泛型(Generics)** 泛型是Java 5引入的一个重要特性,它的主要目的是提高代码的类型安全性和减少类型...

    java 泛型

    1. **类型擦除**:Java泛型在编译后会被擦除,这意味着在运行时,泛型类和非泛型类是相同的。类型参数被替换为它们的边界类型(通常是`Object`)。因此,泛型的主要优势在于编译时的检查,而不是运行时的性能提升。 ...

    JAVA核心编程技术-前十章8.ppt

    Java泛型基本概念 ------------------- ### 1. 设置通配符的上限 在Java 5.0中,引入泛型后extends关键字有了另外的含义,使用extends关键字可以设置泛型通配符的上限,形式如下: ``` ``` 其中的通配符“?”...

    Java深度历险之Java泛型.docx

    类型擦除是Java泛型实现的关键机制之一。其主要过程包括: 1. **类型替换**:将泛型中的类型参数替换为具体的类型。如果没有指定具体的类型,则默认使用`Object`类型。如果有类型边界(上界),则使用该边界作为...

    JAVA设计模式--程序设计--反射--注解--泛型

    Java设计模式、程序设计、反射、注解和泛型是Java开发中的核心概念,它们各自在不同的场景下发挥着重要作用,构建出高效、可维护的软件系统。 首先,Java设计模式是面向对象编程中的一种最佳实践,是解决常见问题的...

    580.578.JAVA基础教程_泛型与File-File类的课后练习(580).rar

    本教程重点聚焦于Java基础知识中的两个关键概念:泛型(Generics)和File类。通过课后练习,我们可以深入理解并熟练掌握这两个主题。 泛型是Java 5引入的一个重要特性,它允许我们在编译时检查类型安全,同时减少了...

    Java泛型与容器详细笔记.pdf (带书签)

    总结来说,Java泛型与容器详细笔记提供了关于如何使用Java中的泛型和容器类的深入理解,涵盖了Java集合框架的核心组件,泛型的类型安全机制,以及一些提高开发效率的第三方库。文档通过实例代码展示了如何在实际项目...

    Java泛型梳理.

    ### Java泛型梳理 #### 一、泛型概念解析 泛型是一种参数化的类型机制,其核心在于将具体的类型参数化处理。这种处理方式类似于函数中的变量参数——具体类型可以在定义时留空,而在实际使用时传入。这种方式极大...

    学士后Java集合框架和泛型课后习题答案

    通过学习和练习这些内容,你可以深入理解Java集合框架的核心概念和泛型的应用,从而在编程实践中更加灵活和高效地处理数据。同时,不断的学习和实践是提升技能的关键,希望你能在Java世界中不断进步。

    Java Generics and Collections (Java泛型与集合)

    Java泛型与集合是Java编程中的核心概念,它们在实际开发中扮演着至关重要的角色。本书"Java Generics and Collections"深入探讨了这两个主题,帮助开发者编写更安全、更高效且可维护的代码。 首先,让我们来理解...

    Java核心技术2-1-01

    总的来说,"Java核心技术2-1-01"的学习资源涵盖了Java开发中的许多核心概念,对于任何想要深入Java世界的人来说,都是一份宝贵的资料。通过系统学习,不仅可以掌握Java编程的基础,还能理解其背后的机制,从而编写出...

    java泛型精华

    ### Java泛型精华详解 ...总之,Java泛型的引入标志着Java语言向着类型安全性和代码复用性迈出了重要一步,尽管它带来了一些复杂性和限制,但掌握这些核心概念将极大地提升开发者在实际项目中的编码效率和代码质量。

    Java语言程序设计教程课件第五章泛型和枚举

    泛型是Java语言的核心特性之一,它允许在定义类、接口和方法时使用类型参数,这个类型参数在使用的时候可以被具体化。这意味着程序员可以为算法编写与类型无关的代码,提高代码复用性。泛型可以应用于集合框架、...

    Java基础篇:泛型.pdf

    Java泛型的一个重要应用是在集合框架中。在JDK 1.5之前,Java集合类框架使用Object作为元素类型,这意味着集合可以存储任何类型的对象。然而,这种设计导致在从集合中获取元素时必须进行类型转换,这个过程是繁琐且...

Global site tag (gtag.js) - Google Analytics