JS技术

从头认识java-13.6 类型擦除(type erasure) - raylee2007的专栏 - 博客频道 - CS

字号+ 作者:H5之家 来源:H5之家 2015-12-14 17:05 我要评论( )

转载自:http://www.ti6.net/wangzhanjishu/2406.html在使用vim编辑器的时候,有时候编辑一个文件,而文件内容比较多,如果需要快速清空整个文件,可以使用一下

这一章节我们讨论一下类型擦除。

1.什么是类型擦除?

在java里面泛型其实是伪泛型,因为他都只是在编译器里面实现的,在jvm里面是没有泛型的概念。

我们看下面的代码:

package com.ray.ch11; import java.util.ArrayList; public class Test { public static void main(String[] args) { ArrayList<Integer> list1 = new ArrayList<Integer>(); ArrayList<String> list2 = new ArrayList<String>(); System.out.println(list1.getClass() == list2.getClass()); } }

输出:

true


为什么两个list对应的Class对象是一致的呢?因为在jvm层面,他只看到List,没有里面的类型。

也就是,泛型里面的类型信息被擦掉了,这就是所谓的类型擦除。

 

2.扩展

我们使用另一个例子来扩展开来。

package com.ray.ch11; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; public class Test { public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<Integer>(); HashMap<String, String> map = new HashMap<String, String>(); HashSet<String> set = new HashSet<String>(); System.out .println(Arrays.toString(list.getClass().getTypeParameters())); System.out.println(Arrays.toString(map.getClass().getTypeParameters())); System.out.println(Arrays.toString(set.getClass().getTypeParameters())); } }


输出:

[E]
[K, V]
[E]


从上面的输出,我们只是看见泛型的标记,但是完全不问清楚里面的类型信息,这是因为代码经过编译器后,类型信息被擦除了。

 

总结:这一章节我们引出类型擦除的概念。

 

这一章节就到这里,谢谢。

-----------------------------------

目录


 

  • 上一篇从头认识java-13.5 利用泛型构建复杂模型
  • 下一篇从头认识java-13.7 什么时候使用泛型?
  • 顶 0 踩 0

    我的同类文章

    猜你在找

    查看评论

    * 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

    TOP

    个人资料


    raylee2007

  • 访问:160135次
  • 积分:4784
  • 等级:

    积分:4784

  • 排名:第3185名
  • 文章搜索

    博客专栏

    从头认识java

    文章:109篇

    阅读:75448

    轻松python之设计模式

    文章:1篇

    阅读:453

    轻松python之文件专题

    文章:7篇

    阅读:4124

    轻松python-文本专题

    文章:18篇

    阅读:5545

    数据结构与算法

    文章:9篇

    阅读:3030

    java基础学习

    文章:31篇

    阅读:10465

    轻松python

    文章:155篇

    阅读:67378

    文章分类

  • JAVA基础(143)
  • GXT(1)
  • Spring(1)
  • 数据结构与算法(9)
  • 其他(0)
  • python(154)
  • 项目(1)
  • 精通python设计模式(1)
  • 文章存档

    阅读排行

  • 零基础学python-目录(2406)
  • 从头认识java-目录(2026)
  • 从头认识java-7.4 实现多重接口(1407)
  • 从头认识java-7.3 接口怎样解耦?(1287)
  • 从头认识java-8.11 为什么需要内部类?(1141)
  • 从头认识java-1.2 对象-服务提供者(1117)
  • 从头认识java-1.1 编程语言抽象过程以及java的基础特性(1101)
  • ssh,spring 泛型注入,泛型dao和service的实现(1080)
  • 从头认识java-3.1 for each(1047)
  • 从头认识java-2.3 自增自减与关系操作符(1033)
  •  

    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章
    • 从头认识java-13.5 利用泛型构建复杂模型 - raylee2007的专栏 - 博客频道 - CSDN.NET r

      从头认识java-13.5 利用泛型构建复杂模型 - raylee2007的专栏 - 博客

      2015-12-15 09:12

    网友点评