`
yupengcc
  • 浏览: 137729 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

java泛型的内部原理

    博客分类:
  • java
阅读更多

  如果你还不知道泛型的使用请看这里
    在JDK1.5中加入了泛型,能帮助我们简化代码,能解决不少问题,那JDK1.5中是如何实现的呢 ?
JDK1.5中泛型的实现是擦拭法实现的,不同与c++中的泛型。说擦拭法可能有点难理解,所以从下边的角度理解一下:
我们写一个程序

 1 package com.jdk15;
 2 
 3 import java.util.ArrayList;
 4 
 5 public class Generic {
 6     public static void main(String[] args){
 7         ArrayList<String> list = new ArrayList<String>();
 8         list.add("a");
 9         list.add("b");
10         String str = list.get(0);
11     }
12 }

编译成.class的文件
然后用Jad反编译后的结果:

 1 // Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov.
 2 // Jad home page: http://www.kpdus.com/jad.html
 3 // Decompiler options: packimports(3) 
 4 // Source File Name:   Generic.java
 5 
 6 package com.jdk15;
 7 
 8 import java.util.ArrayList;
 9 
10 public class Generic
11 {
12 
13     public Generic()
14     {
15     }
16 
17     public static void main(String args[])
18     {
19         ArrayList list = new ArrayList();
20         list.add("a");
21         list.add("b");
22         String str = (String)list.get(0);
23     }
24 }
25 

看到这个是否明白了吗 ?
在JDK1.5中,只是在编译期作了下手脚,就是在你编译之前,自动补充了转型,然后编译实现的。
所以JDK1.5中的泛型只简化了代码的编写,并没有提高性能的原因。因为转型并没有去掉。

分享到:
评论

相关推荐

    java泛型的内部原理及更深应用

    在“java泛型的内部原理及更深应用”这个主题中,我们将深入探讨以下几个关键知识点: 1. **类型擦除**:Java泛型的主要特点是类型擦除。这意味着在编译完成后,所有的泛型信息都会被擦除,替换为Object或者其他...

    java泛型深入.pdf

    Java泛型是Java语言中用于处理类型安全的一种机制,它允许在编译期间提供类型检查,并在运行时消除了类型转换。Java泛型深入的内容涵盖泛型的基本概念、泛型类、接口、方法以及泛型的使用限制和高级特性。 首先,...

    java泛型Demo

    Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入。泛型的主要目的是提供类型安全,帮助程序员在编译时发现可能的类型错误,同时也提供了更好的代码重用。在这个"java泛型Demo"中,我们...

    JavaGenericsFAQ

    4. **编译器背后的Java泛型技术细节**:这部分探讨了一些高级且较为深奥的Java泛型方面,适合那些想要深入了解Java泛型内部机制的开发者。 #### 二、Java 泛型基础 ##### 1. 泛型的概念 Java泛型是一种在编译时...

    JAVA学习笔试(数据基础+泛型编程)-适合小白

    - **类的加载**:Java中的类加载机制,包括加载、连接、初始化三个阶段,以及类加载器的工作原理,如ClassLoader和双亲委派模型。 5. **其他未提及但重要的概念** - **多线程**:Java提供了强大的多线程支持,...

    java offer来了原理篇.pdf

    数据库是现代软件系统的基石,了解其内部原理和分布式事务处理是成长为高级Java开发者不可或缺的一部分。 第八部分专注于分布式缓存的原理及应用,介绍分布式缓存的介绍、Ehcache和Redis的原理及应用,以及分布式...

    JAVA的内部测试题

    这份"JAVA的内部测试题"集合,可能是为了帮助学习者检验和提升他们在Java编程中的技能和理解。ACCP5.0-java标签可能指的是一个特定的课程或者认证体系,其中包含了关于Java 5.0或更新版本的教材和训练。 Java测试题...

    JAVA核心知识点整理.zip

    java核心知识点整理,面试很有用 Java核心知识点2.JVM JVM 是可运行 Java 代码的假想计算机 ,包括...5.4JAVA 内部类 5.5JAVA 泛型 5.6JAVA 序列化(创建可复用的 Java 对象) 5.7JAVA 复制 6. Spring 原理

    泛型需要注意的问题.pdf

    Java泛型的机制要求使用集合框架时必须明确集合中元素的类型,以保证类型安全,防止在运行时出现类型转换错误。 泛型类型变量不能是基本数据类型: 泛型类型变量不能是基本数据类型。比如不能声明一个`ArrayList...

    华为java培训内部资料

    这份“华为java培训内部资料”旨在帮助开发者深入理解Java的核心概念,提升在实际项目中的应用能力。 一、Java基础 1. Java简介:了解Java的发展历程、特点和应用领域,以及为什么它在行业中如此受欢迎。 2. Java...

    达内JAVA培训内部教程源码

    "达内JAVA培训内部教程源码"是一个专门针对Java学习的资源集合,旨在帮助学员深入理解和掌握Java技术。达内是一家知名的IT培训机构,其内部教程通常包含了丰富的实践案例和详尽的教学指导,对初学者和有一定基础的...

    泛型编程 时间测试

    4. **容器的内存管理**:泛型容器(如C++的`std::vector`或Java的`ArrayList`)的性能取决于其内部实现,包括元素的存储和访问。理解这些容器如何处理不同类型的数据,可以帮助我们优化时间测试的结果。 为了有效地...

    jdk1.5的新特性泛型的实例代码

    下面将深入探讨泛型的实例代码及其背后的原理。 一、泛型的基本概念 泛型是Java中一种用于处理不同数据类型的模板设计模式。在类、接口或方法声明中使用类型参数,可以限制这些结构能操作的数据类型。例如,我们...

    genericDemo.

    在本文中,我们将深入探讨Java泛型的基本概念、使用方法以及如何通过"genericDemo"这个例子来理解其工作原理。 首先,我们要理解泛型的基本概念。泛型是在Java SE 5.0引入的,主要目标是增强类型安全性并提高代码...

    东软JAVA内部资料2

    Java泛型引入自Java 5,用于提供类型安全的容器。泛型可以避免类型转换的麻烦,并在编译时检查类型错误,提高了代码的可读性和安全性。 【设计模式】 设计模式是解决软件设计中常见问题的经验总结,如单例模式、...

    sun公司的Java内部培训教材

    本篇内容将深入解析Sun公司的内部Java培训教材,帮助读者全面理解Java的核心概念、语法特性以及实际应用。 一、Java语言基础 1. 类与对象:Java是一种面向对象的语言,类是对象的模板,对象则是类的实例。了解如何...

    java-GenericSort-源码.rar

    本篇将深入解析Java泛型排序的源码,理解其背后的工作原理。 1. **泛型的概念与作用** 泛型是Java SE 5.0引入的新特性,它允许在定义类、接口和方法时使用类型参数,从而提高了代码的灵活性和安全性。通过泛型,...

Global site tag (gtag.js) - Google Analytics