在泛型代码内部,无法获得任何有关泛型参数类型的信息。
例如:
public class TypeValue{
public static void main(String[] args){
Class c1 = new ArrayList<String>().getClass();
Class c2 = new ArrayList<String>().getClass();
System.out.println(c1==c2);
}
}
输出的结果是true
按照我们的意愿应该输出false,他们应该是不同的类型String和Integer,和输出的却是相同的类型,但是如果你吧
Integer放入ArrayList<Integer>中可以,放入ArrayList<String>却不可以,他们是相同的类型,却又不能放进Integer,很迷惑
下面的例子可解密
public class LostInformation{
public static void main(Stirng[] args){
List<Frob> list = new ArrayList<Frob>();
Map<Frob,Fnorkle> map = new HashMap<Frob,Fnorkle>();
Quark<Fnorkle> quark = new Quark<Fnorkle>();
System.out.println(Arrays.toString(
map.getClass().getTypeParameters());
System.out.println(Arrays.toString(
list.getClass().getTypeParameters());
System.out.println(Arrays.toString(
quark.getClass().getTypeParameters());
}
}
输出:[E]
[K,V]
[Q]
说明:Class.getTypeParameters()将“返回一个TypeVariable对象数组,表示有泛型申明所申明的类型参数”
结果就是
在泛型代码内部,无法获得任何有关泛型参数类型的信息
java的泛型是使用擦除来实现的,这意味当我们在使用泛型的时候,任何具体的类型信息都被擦除了,我们唯一知道的是我们在使用一个对象,因此List<String>和List<Integer>在运行时候的类型是相同的,这俩中类型都被查出了原始的类型即List.
边界<T extends HasF>申明T必须具备有类型HasF或者从HasF继承的类型,
分享到:
相关推荐
Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力...
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...
补充知识:泛型1---马克-to-win java视频的详细描述与介绍
标题与描述均提到了“全面总结Java泛型--实例”,这表明文章旨在深入解析Java泛型的概念,并通过具体示例来展示其应用。Java泛型是Java编程语言的一个强大特性,它允许在编译时检查类型安全,并且所有的强制转换都是...
【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET
**Delphi泛型库——DGL详解** 在Delphi编程环境中,DGL(The Delphi Generic Library)是一个非常重要的工具,它为开发者提供了类型安全、高效且易用的泛型容器和算法。这个库的设计灵感来源于C++的STL(Standard ...
day02【Collection、泛型】-笔记.md
《数学与泛型编程-高效编程的奥秘》个人阅读笔记
泛型是Java语言的一个重要特性,首次出现在Java SE 1.5版本中。它的引入主要是为了解决在集合操作中类型安全性的问题,并通过引入参数化类型的概念,提高了代码的复用性与可读性。 ### 泛型概念 泛型,即参数化...
补充知识2 ---马克-to-win java视频泛型的详细描述与介绍
数学和泛型编程-高效编程的奥秘(英文版pdf)原名:From_Mathematics_to_Generic_Programming,作者;Alexander A. Stepanov Daniel E. Rose
### STL泛型编程知识点解析 #### 一、STL与泛型编程概述 - **STL简介**:STL(Standard Template Library,标准模板库)是C++标准库的一个重要组成部分,它提供了一系列高效的数据结构和算法实现。STL的核心包括...
在这个“TypeScript泛型类 - 把类作为参数类型的泛型类”示例中,我们将深入探讨如何利用泛型在TypeScript中创建灵活的、可复用的类模板。 泛型是TypeScript中的一个核心概念,它允许我们在编写代码时定义和重用...
本demo是自己写的一个命令模式的demo,设计到了一般的命令模式,命令模式的变种,万能命令,block封装命令,复合型命令等等,对整个demo我写了一篇文章:https://www.jianshu.com/p/266794b9eda6 ,有兴趣的可以对照着文章...
在C++编程中,泛型算法是用于处理各种不同数据结构(如数组、向量、列表等)的一组通用函数,这些函数不依赖于特定的数据类型。本篇内容主要涉及了两个重要的泛型算法——`count`和`accumulate`,以及如何在实际编程...
Decal 的全称是 Delphi Container and Algorithm Library,也就是 Delphi 数据容器和算法类库。 我个人认为是目前我所发现的类结构建模建得很好的一个数据结构类库,性能也是相当突出。他的思想是来自Stepanov 和 ...
.Net 泛型约束-附件资源
Delphi泛型库--DGL(The Delphi Generic Library) , writed in 2004. === 安装: 将DGL源代码目录设置到编译器的搜索路径中 使用方法: 直接引用DGL_XXX.pas单元,大部分应用都应该没有问题了; 如果为了速度或效率等...