我偶尔听说过泛型,Java 做得不对。 (最近的引用,here)
请原谅我的经验不足,但是什么能让他们变得更好?
最佳答案
不好:
- 类型信息在编译时丢失,因此在执行时您无法判断它“意味着”是什么类型
- 不能用于值类型(这是一个大问题 - 例如,在 .NET 中,
List<byte>
确实由byte[]
支持,并且不需要装箱) - 调用泛型方法的语法很糟糕 (IMO)
- 约束的语法可能会令人困惑
- 通配符通常令人困惑
- 由于上述原因的各种限制 - Actor 等
好:
- 通配符允许在调用方指定协变/逆变,这在许多情况下都非常简洁
- 总比没有好!
关于java - 为什么有些人声称 Java 的泛型实现很糟糕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/520527/