gpt4 book ai didi

java - 为什么 Java(但不是 .NET)无法在不需要原始类型/类型删除的情况下适应泛型?

转载 作者:搜寻专家 更新时间:2023-10-31 08:26:50 27 4
gpt4 key购买 nike

我的理解是,Java 中存在原始类型和类型删除的原因是因为在引入泛型时,存在无法在不破坏现有代码的情况下实现泛型化的标准 API。

泛型也在以后的某个时候被引入到 .NET 中,但是这个特性是以不依赖原始类型或类型删除的方式实现的(如果依赖,它是以透明的方式实现的)给用户)。因此,现有 API 保持不变(例如,System.Collections 命名空间中的代码)并引入了新的通用 API(例如,System.Collections.Generic 命名空间中的代码)。

那么 Java 泛型与 .NET 泛型不同,为什么需要原始类型/类型删除?

最佳答案

.Net 通过改变字节码语言、虚拟机和 JITter 来识别泛型类型,从而引入了泛型。
这是一项耗时大约两年的大量工作。

Java 将泛型作为纯粹的编译时特性引入,只有很小的运行时变化(新的元数据和反射 API)。
这是一个简单得多的任务,并且它保持与旧运行时的向后兼容性,但使用起来更烦人。

关于java - 为什么 Java(但不是 .NET)无法在不需要原始类型/类型删除的情况下适应泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17616281/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com