泛型的危害不是一个语言特性,我们必须明确这一点,而在在运行时
例如在List<T>这样的类型在运行时都替换成List,而普通的类型变量在未指定边界的情况下都将替换成Object类型
替换的代价是显而易见的,即在运行时不能显示的引用运行的操作,例如转型,instanceof和new表达式。因为所有关于参数类型的信息都被丢失了。
当我们创建了Foot<Cat> foot = new Foot<Cat>();看起来好像拥有了参数的类型,但事实并非如此,其实它只是一个Object类型而已。
例子:
public class SimpleHolder{
private Object obj;
public void set(Object obj){
this.obj = obj;
}
public Object get(){
return obj;
}
public static void main(String[] args){
SimpleHolder simple = new SimpleHolder();
simple.set("item");
String s = (String)simple.get();
}
}
public Class SimpleHolder<T> {
privatate T obj;
public void set(T t){
this. obj = t;
}
public T get(){
return obj;
}
public static void main(String[] args){
SimpleHolder<String> simple = new SimpleHolder<String>();
simple.set("item");
String s = simple.get();
}
}
编译它们产生字节码是相同的,
由于所产生的get()和set()的字节码是相同的,所以在泛型中的所有动作都发生在边界处,对传递进来的值进行额外的编译器检测,并插入对传递出去的值的类型,所以:“边界是发生动作的地方”
分享到:
相关推荐
Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力【泛型】---- 代码 Java 第二阶段提升编程能力...
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...
补充知识:泛型1---马克-to-win java视频的详细描述与介绍
标题与描述均提到了“全面总结Java泛型--实例”,这表明文章旨在深入解析Java泛型的概念,并通过具体示例来展示其应用。Java泛型是Java编程语言的一个强大特性,它允许在编译时检查类型安全,并且所有的强制转换都是...
【Java基础】泛型方法 - 右撇子 - 博客频道 - CSDN.NET
总之,DGL是Delphi开发者的一个强大工具,它通过泛型技术提高了代码的可复用性和安全性,同时提供了丰富的数据结构和算法,使得开发者能够更专注于问题的解决,而非基础数据操作的实现。无论是在大型项目还是小型...
day02【Collection、泛型】-笔记.md
它的引入主要是为了解决在集合操作中类型安全性的问题,并通过引入参数化类型的概念,提高了代码的复用性与可读性。 ### 泛型概念 泛型,即参数化类型(Parameterized Types),是允许在定义类、接口和方法时使用...
《数学与泛型编程-高效编程的奥秘》个人阅读笔记
补充知识2 ---马克-to-win java视频泛型的详细描述与介绍
### STL泛型编程知识点解析 #### 一、STL与泛型编程概述 - **STL简介**:STL(Standard Template Library,标准模板库)是C++标准库的一个重要组成部分,它提供了一系列高效的数据结构和算法实现。STL的核心包括...
数学和泛型编程-高效编程的奥秘(英文版pdf)原名:From_Mathematics_to_Generic_Programming,作者;Alexander A. Stepanov Daniel E. Rose
在这个“TypeScript泛型类 - 把类作为参数类型的泛型类”示例中,我们将深入探讨如何利用泛型在TypeScript中创建灵活的、可复用的类模板。 泛型是TypeScript中的一个核心概念,它允许我们在编写代码时定义和重用...
本demo是自己写的一个命令模式的demo,设计到了一般的命令模式,命令模式的变种,万能命令,block封装命令,复合型命令等等,对整个demo我写了一篇文章:https://www.jianshu.com/p/266794b9eda6 ,有兴趣的可以对照着文章...
泛型使我们的代码更具通用性,能够处理不同类型的数据,而图遍历算法则帮助我们解决实际问题,如成语接龙游戏的解决方案。理解并掌握这些技术对于任何想要在IT领域深入发展的人员来说都是至关重要的。
使用泛型算法的好处在于,它们提供了标准化的解决方案,减少了代码的重复,并且能够在编译时自动进行类型检查,确保安全性和效率。同时,通过使用标准库提供的算法,开发者可以专注于解决问题,而不是实现基础的算法...
.Net 泛型约束-附件资源
Decal 的全称是 Delphi Container and Algorithm Library,也就是 Delphi 数据容器和算法类库。 我个人认为是目前我所发现的类结构建模建得很好的一个数据结构类库,性能也是相当突出。他的思想是来自Stepanov 和 ...