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