`
chenjingbo
  • 浏览: 460008 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

java泛型- 说好的类型擦除呢.

 
阅读更多

      今天在学习其他的时候,无意发现了一个有趣的东西.看下面的代码

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泛型和集合].(Java.Generics.and.Collections).文字版

    - **类型擦除**:Java泛型在编译后会被擦除,但在编译时提供了类型检查。 Maurice Naftalin和Philip Wadler的书籍会详细探讨这些概念,并通过实例解释如何在实际项目中应用泛型和集合。书中的文字版内容可能涵盖: ...

    Java泛型类型擦除后的补偿

    本文将深入探讨Java泛型类型擦除的概念,并介绍在类型擦除后,为了保持泛型的安全性和便利性,Java设计者所采取的一些补偿机制。 1. **类型擦除**: - 在编译期间,所有的泛型类型信息都会被替换为它们的实际类型...

    解析Java泛型的类型擦除.pdf

    在 Java 语言中,泛型类型擦除的机制使得开发者难以理解和使用泛型,例如,在 Java 中,我们可以定义一个泛型类 `ArrayList&lt;T&gt;`,其中 `T` 是类型参数,但是,在编译后的字节码文件中,泛型类型信息已经被擦除,所有...

    很好的Java泛型的总结

    Java泛型机制详解 Java泛型是Java语言中的一种机制,用于在编译期检查类型安全。Java泛型的出现解决了Java早期版本中类型安全检查的缺陷。Java泛型的好处是可以在编译期检查类型安全,避免了运行时的...

    java泛型技术之发展

    - **类型擦除**:Java泛型采用了类型擦除的策略,这意味着在编译期间,泛型信息会被删除,只留下原始的无参数类型,这解决了与Java的向下兼容问题。 - **JDK 5.0引入**:Java 5.0正式引入泛型,使得在编译时期就能...

    jdk-8u91-linux-x64.tar.gz

    - Type接口:允许泛型擦除后的类型信息在运行时可获取。 7. **使用场景**: - 开发Java桌面应用、Web应用、移动应用(Android)、服务器端应用、大数据处理等。 - 教学和学习Java编程语言。 - 进行单元测试、...

    Java 泛型擦除后的三种补救方法

    然而,Java 的泛型在运行时是被擦除的,这意味着在运行时刻,所有的泛型类型信息都会丢失,无法直接用来创建对象或进行类型检查。这导致我们无法使用 `new T()` 或 `instanceof` 这样的操作。为了解决这个问题,我们...

    SourceCode-for-Thinking-in-Java.chm.zip_in

    10. **泛型**:详细阐述了泛型的使用,包括类型参数、通配符、类型擦除等。 11. **GUI编程**:通过Swing库展示了如何构建图形用户界面,包括组件、布局管理器、事件处理等。 12. **网络编程**:介绍了如何编写...

    java 泛型类的类型识别示例

    综上所述,虽然Java泛型在编译后会进行类型擦除,但通过上述技巧,我们仍然能够在运行时获得关于泛型类实例化类型的一些信息。在实际开发中,这些方法可以帮助我们编写更加灵活和安全的代码。在示例文件`GenericRTTI...

    Java泛型技术之发展.pdf

    - **类型擦除**:Java泛型在编译后会被类型擦除,所有类型参数都会被替换为它们的边界类型或者Object,因此在运行时没有泛型的概念,这是为了保持向后兼容性。 3. **泛型的优势** - **类型安全**:编译时就能发现...

    29-API-集合框架-泛型-使用_java_

    通过学习和掌握Java泛型,开发者能够编写出更健壮、类型安全的代码,减少类型转换错误,提升代码质量。这个视频教程"29-API-集合框架-泛型-使用"应该会深入浅出地讲解这些概念,对于想要提升Java编程技能的初学者或...

    java中的泛型-详细

    总的来说,Java泛型提供了一种强大的工具,让开发者能够编写更加安全、灵活且可复用的代码。它简化了类型转换,增强了类型检查,并通过类型擦除保持了与现有Java代码的兼容性。理解和熟练运用泛型是每个Java开发者的...

    Java1.5泛型指南中文版(Java1.5Gene....pdf

    通配符是泛型类型参数的占位符,用于表示可变的类型参数。例如,`List&lt;? extends Number&gt;` 表示一个可以存储 Number 或其子类的列表。通配符可以分为bounded wildcards 和 unbounded wildcards 两种。 5. 泛型方法 ...

    JVM如何理解Java泛型类.doc

    尽管如此,由于JVM本身的限制,所有的泛型信息在编译后都会被擦除,因此理解类型擦除的概念对于正确使用Java泛型至关重要。开发者应该注意在创建泛型对象时明确指定类型参数,并理解编译时与运行时的区别,以避免...

    Java-泛型.ppt

    Java泛型的一个重要特点是**类型擦除**。这意味着在编译之后,所有的泛型信息都会被擦除,仅保留原始类型。这意味着泛型实际上只是一个编译时的检查机制,运行时不会保留泛型信息。例如,`List&lt;Integer&gt;`和`List...

    Java语言 泛型讲解案例代码 (泛型类、泛型接口、泛型方法、无界及上下限通配符、泛型对协变和逆变的支持、类型擦除 ...)

    学习和理解Java泛型的基本概念和语法; 实际项目中需要使用泛型来增加类型安全性和重用性的开发任务。 目标: 本代码资源的目标是帮助读者理解泛型的用法和优势,并通过实际的示例代码加深对泛型的掌握。读者可以...

Global site tag (gtag.js) - Google Analytics