如果你还不知道泛型的使用请看这里
在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 }
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
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泛型的内部原理及更深应用”这个主题中,我们将深入探讨以下几个关键知识点: 1. **类型擦除**:Java泛型的主要特点是类型擦除。这意味着在编译完成后,所有的泛型信息都会被擦除,替换为Object或者其他...
Java泛型是Java语言中用于处理类型安全的一种机制,它允许在编译期间提供类型检查,并在运行时消除了类型转换。Java泛型深入的内容涵盖泛型的基本概念、泛型类、接口、方法以及泛型的使用限制和高级特性。 首先,...
Java泛型是Java编程语言中的一个关键特性,它在2004年随着JDK 5.0的发布被引入。泛型的主要目的是提供类型安全,帮助程序员在编译时发现可能的类型错误,同时也提供了更好的代码重用。在这个"java泛型Demo"中,我们...
4. **编译器背后的Java泛型技术细节**:这部分探讨了一些高级且较为深奥的Java泛型方面,适合那些想要深入了解Java泛型内部机制的开发者。 #### 二、Java 泛型基础 ##### 1. 泛型的概念 Java泛型是一种在编译时...
- **类的加载**:Java中的类加载机制,包括加载、连接、初始化三个阶段,以及类加载器的工作原理,如ClassLoader和双亲委派模型。 5. **其他未提及但重要的概念** - **多线程**:Java提供了强大的多线程支持,...
数据库是现代软件系统的基石,了解其内部原理和分布式事务处理是成长为高级Java开发者不可或缺的一部分。 第八部分专注于分布式缓存的原理及应用,介绍分布式缓存的介绍、Ehcache和Redis的原理及应用,以及分布式...
这份"JAVA的内部测试题"集合,可能是为了帮助学习者检验和提升他们在Java编程中的技能和理解。ACCP5.0-java标签可能指的是一个特定的课程或者认证体系,其中包含了关于Java 5.0或更新版本的教材和训练。 Java测试题...
java核心知识点整理,面试很有用 Java核心知识点2.JVM JVM 是可运行 Java 代码的假想计算机 ,包括...5.4JAVA 内部类 5.5JAVA 泛型 5.6JAVA 序列化(创建可复用的 Java 对象) 5.7JAVA 复制 6. Spring 原理
Java泛型的机制要求使用集合框架时必须明确集合中元素的类型,以保证类型安全,防止在运行时出现类型转换错误。 泛型类型变量不能是基本数据类型: 泛型类型变量不能是基本数据类型。比如不能声明一个`ArrayList...
这份“华为java培训内部资料”旨在帮助开发者深入理解Java的核心概念,提升在实际项目中的应用能力。 一、Java基础 1. Java简介:了解Java的发展历程、特点和应用领域,以及为什么它在行业中如此受欢迎。 2. Java...
"达内JAVA培训内部教程源码"是一个专门针对Java学习的资源集合,旨在帮助学员深入理解和掌握Java技术。达内是一家知名的IT培训机构,其内部教程通常包含了丰富的实践案例和详尽的教学指导,对初学者和有一定基础的...
4. **容器的内存管理**:泛型容器(如C++的`std::vector`或Java的`ArrayList`)的性能取决于其内部实现,包括元素的存储和访问。理解这些容器如何处理不同类型的数据,可以帮助我们优化时间测试的结果。 为了有效地...
下面将深入探讨泛型的实例代码及其背后的原理。 一、泛型的基本概念 泛型是Java中一种用于处理不同数据类型的模板设计模式。在类、接口或方法声明中使用类型参数,可以限制这些结构能操作的数据类型。例如,我们...
在本文中,我们将深入探讨Java泛型的基本概念、使用方法以及如何通过"genericDemo"这个例子来理解其工作原理。 首先,我们要理解泛型的基本概念。泛型是在Java SE 5.0引入的,主要目标是增强类型安全性并提高代码...
Java泛型引入自Java 5,用于提供类型安全的容器。泛型可以避免类型转换的麻烦,并在编译时检查类型错误,提高了代码的可读性和安全性。 【设计模式】 设计模式是解决软件设计中常见问题的经验总结,如单例模式、...
本篇内容将深入解析Sun公司的内部Java培训教材,帮助读者全面理解Java的核心概念、语法特性以及实际应用。 一、Java语言基础 1. 类与对象:Java是一种面向对象的语言,类是对象的模板,对象则是类的实例。了解如何...
本篇将深入解析Java泛型排序的源码,理解其背后的工作原理。 1. **泛型的概念与作用** 泛型是Java SE 5.0引入的新特性,它允许在定义类、接口和方法时使用类型参数,从而提高了代码的灵活性和安全性。通过泛型,...