今天在学习其他的时候,无意发现了一个有趣的东西.看下面的代码
package generic; import java.lang.reflect.Field; import java.util.Map; /** * User: zhenghui * Date: 13-11-13 * Time: 上午10:41 */ public class GenericClass { private Map<String, Long> map; public static void main(String[] args) throws NoSuchFieldException { Field map_field = GenericClass.class.getDeclaredField("map"); System.out.println(map_field.getGenericType()); } }
然后,看打印输出
写道
java.util.Map<java.lang.String, java.lang.Long>
我擦了..说好的类型擦除呢~! 是我学艺不精啊..被网上充斥的一堆类型擦除给迷惑了....然后google相关知识..又回复到撒迦的地盘了.. 答复: Java获得泛型类型
至于原理性的东西,撒迦的帖子已经说的很详细了..下面再补充一个具体的实现代码
http://developer.51cto.com/art/201103/250028.htm
差不多就这样.
相关推荐
- **类型擦除**:Java泛型在编译后会被擦除,但在编译时提供了类型检查。 Maurice Naftalin和Philip Wadler的书籍会详细探讨这些概念,并通过实例解释如何在实际项目中应用泛型和集合。书中的文字版内容可能涵盖: ...
本文将深入探讨Java泛型类型擦除的概念,并介绍在类型擦除后,为了保持泛型的安全性和便利性,Java设计者所采取的一些补偿机制。 1. **类型擦除**: - 在编译期间,所有的泛型类型信息都会被替换为它们的实际类型...
在 Java 语言中,泛型类型擦除的机制使得开发者难以理解和使用泛型,例如,在 Java 中,我们可以定义一个泛型类 `ArrayList<T>`,其中 `T` 是类型参数,但是,在编译后的字节码文件中,泛型类型信息已经被擦除,所有...
Java泛型机制详解 Java泛型是Java语言中的一种机制,用于在编译期检查类型安全。Java泛型的出现解决了Java早期版本中类型安全检查的缺陷。Java泛型的好处是可以在编译期检查类型安全,避免了运行时的...
- **类型擦除**:Java泛型采用了类型擦除的策略,这意味着在编译期间,泛型信息会被删除,只留下原始的无参数类型,这解决了与Java的向下兼容问题。 - **JDK 5.0引入**:Java 5.0正式引入泛型,使得在编译时期就能...
- Type接口:允许泛型擦除后的类型信息在运行时可获取。 7. **使用场景**: - 开发Java桌面应用、Web应用、移动应用(Android)、服务器端应用、大数据处理等。 - 教学和学习Java编程语言。 - 进行单元测试、...
然而,Java 的泛型在运行时是被擦除的,这意味着在运行时刻,所有的泛型类型信息都会丢失,无法直接用来创建对象或进行类型检查。这导致我们无法使用 `new T()` 或 `instanceof` 这样的操作。为了解决这个问题,我们...
10. **泛型**:详细阐述了泛型的使用,包括类型参数、通配符、类型擦除等。 11. **GUI编程**:通过Swing库展示了如何构建图形用户界面,包括组件、布局管理器、事件处理等。 12. **网络编程**:介绍了如何编写...
综上所述,虽然Java泛型在编译后会进行类型擦除,但通过上述技巧,我们仍然能够在运行时获得关于泛型类实例化类型的一些信息。在实际开发中,这些方法可以帮助我们编写更加灵活和安全的代码。在示例文件`GenericRTTI...
- **类型擦除**:Java泛型在编译后会被类型擦除,所有类型参数都会被替换为它们的边界类型或者Object,因此在运行时没有泛型的概念,这是为了保持向后兼容性。 3. **泛型的优势** - **类型安全**:编译时就能发现...
通过学习和掌握Java泛型,开发者能够编写出更健壮、类型安全的代码,减少类型转换错误,提升代码质量。这个视频教程"29-API-集合框架-泛型-使用"应该会深入浅出地讲解这些概念,对于想要提升Java编程技能的初学者或...
总的来说,Java泛型提供了一种强大的工具,让开发者能够编写更加安全、灵活且可复用的代码。它简化了类型转换,增强了类型检查,并通过类型擦除保持了与现有Java代码的兼容性。理解和熟练运用泛型是每个Java开发者的...
通配符是泛型类型参数的占位符,用于表示可变的类型参数。例如,`List<? extends Number>` 表示一个可以存储 Number 或其子类的列表。通配符可以分为bounded wildcards 和 unbounded wildcards 两种。 5. 泛型方法 ...
尽管如此,由于JVM本身的限制,所有的泛型信息在编译后都会被擦除,因此理解类型擦除的概念对于正确使用Java泛型至关重要。开发者应该注意在创建泛型对象时明确指定类型参数,并理解编译时与运行时的区别,以避免...
Java泛型的一个重要特点是**类型擦除**。这意味着在编译之后,所有的泛型信息都会被擦除,仅保留原始类型。这意味着泛型实际上只是一个编译时的检查机制,运行时不会保留泛型信息。例如,`List<Integer>`和`List...
学习和理解Java泛型的基本概念和语法; 实际项目中需要使用泛型来增加类型安全性和重用性的开发任务。 目标: 本代码资源的目标是帮助读者理解泛型的用法和优势,并通过实际的示例代码加深对泛型的掌握。读者可以...