美文网首页
03.理解java中的泛型

03.理解java中的泛型

作者: 过往入梦 | 来源:发表于2017-11-20 01:16 被阅读0次
  • 在编程中,我们希望写出一些更加泛化的代码,通俗点举例就是说,我不关心你是什么类型,只要你能提供某种方法即可。对此,很多编程语言(譬如python和c++)提供了一种解决方案叫做潜在类型机制
  • java由于在1.5版本后才引入泛型,为了保证向上兼容,导致Java中的泛型并不好用。
  • java的泛型是使用擦除来实现的,这是Java泛型实现的一种无奈的折中。举个栗子,List<T>,java只是在编译时候校验容器List中的数据类型T,而在实际运行时候会被擦除为List。也就是说,程序运行时,实际是一堆List、Map、Object等泛化的东西在运行。
  • 使用JDK提供的注解@SuppressWarnings("unchecked"),忽略运行时的一些警告⚠️。在关闭警告时候要尽量聚焦。
  • 在泛型中的所有动作发生在边界(对象进入和离开方法的地点)处。
    使用extends设置边界。
  • 通配符? List<? extends Fruit> 意思是具有任何从Fruit继承的类型列表,这个类型必须是明确的类型,但我们在运行中只想知道它是List<Fruit>就行了。
  • 逆变 使用超类型通配符。List<? super Apple> Apple是下界,不能向List中添加Fruit。
  • 无界通配符 <?> List<?>看起来等价于List<Object>,但List实际意思是持有任何Object类型的原生List,而List<?>实际意思是具有某种特定类型的非原生List,只是我们不知道那种类型是什么。
  • 一个类不能实现同一个泛型接口的两种变体,由于擦除原因,这两个变体会成为相同的接口。
  • 自限定的类型。 class SelfBounded<T extends <SelfBounded<T>>>强制要求将正在定义的类当做参数传递给基类。
  • 被称为泛型的通用语言特性的目的在于可表达性,而不仅仅是为了创建类型安全的容器。
  • java中泛型的出现让数组很尴尬,我们在编程时优先选择容器而不是数组。除了效率比容器高,数组一无是处。但如果证明出切换到数组对性能提升有帮助,还是要用数组的。譬如,对于阿里巴巴的FastJson.jar里面的JSONArray,是对json中的数组的解析,但其实也可以用List解析啊,会不会有这个原因在里面,我没有想明白,后面再研究吧。

相关文章

  • 03.理解java中的泛型

    在编程中,我们希望写出一些更加泛化的代码,通俗点举例就是说,我不关心你是什么类型,只要你能提供某种方法即可。对此,...

  • [Java菜鸟系列] 「林彪」教你"通配符泛型

    J007- [Java菜鸟系列] 「林彪」教你"通配符泛型" 菜鸟:Java方法参数中的泛型通配符要怎么理解?老湿...

  • JDK1.5后增加了泛型,那么为什么要有泛型呢?我们该如何自定义

    本篇主要讲解java泛型的理解、集合中简单使用泛型、自定义泛型结构(包括类、接口、方法)。 一、什么是泛型? 通俗...

  • 泛型琐碎之泛型上下限

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

  • Java中与泛型相关的接口 之 术语定义

    在Java泛型编程中,很多单词从英文翻译中文后会变味,令人难以理解。在很多讲解Java泛型的中文作品中,对于同一英...

  • Java 泛型

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

  • JAVA泛型的理解

    泛型大家都接触的不少,但是由于Java历史原因,Java中泛型一直被称为伪泛型,因此对Java中的泛型,有很多不注...

  • java泛型理解及应用

    内容: java泛型理解及应用

  • java_泛型

    类型擦除正确理解泛型概念的首要前提是理解类型擦除(type erasure)。 Java中的泛型基本上都是在编译器...

  • java中泛型的理解

    百度百科:https://baike.baidu.com/item/java泛型/511821?fr=aladdin

网友评论

      本文标题:03.理解java中的泛型

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