我听说泛型的 Java 实现不如 C# 实现。在语法看起来很相似的情况下,Java 实现有什么不合标准的地方,还是一种宗教观点?
最佳答案
streloksi's link在打破差异方面做得很好。快速而肮脏的总结是......
在语法和用法方面。语言之间的语法大致相同。这里和那里的一些怪癖(最明显的是在约束中)。但基本上,如果你能读懂一个,你就可以读/用另一个。
最大的区别在于实现。
Java 使用类型删除的概念来实现泛型。简而言之,底层编译的类实际上并不是通用的。它们编译为 Object 和 casts。实际上,Java 泛型是编译时工件,在运行时很容易被破坏。
另一方面,借助 CLR,C# 实现了泛型,一直到字节码。为了在 2.0 中支持泛型,CLR 进行了几项重大更改。好处是性能改进、深度类型安全验证和反射。
再次提供 link有更深入的分割,我鼓励您阅读
关于C# 与 Java 泛型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/355060/