java - 为什么有人声称 Java 的泛型实现很糟糕?

标签 java generics

我偶尔听说 Java 对泛型的处理不当。 (最近的引用,here)

请原谅我缺乏经验,但是怎样才能让它们变得更好呢?

最佳答案

差:

  • 类型信息在编译时丢失,所以在执行时你无法判断它“意味着”是什么类型
  • 不能用于值类型(这是一个大问题 - 例如,在 .NET 中,List<byte> 确实由 byte[] 支持,并且不需要装箱)
  • 调用泛型方法的语法很糟糕(IMO)
  • 约束的语法可能会令人困惑
  • 通配符通常令人困惑
  • 由于上述原因的各种限制 - 类型转换等

好:

  • 通配符允许在调用端指定协变/逆变,这在很多情况下都非常简洁
  • 聊胜于无!

关于java - 为什么有人声称 Java 的泛型实现很糟糕?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/933293/

相关文章:

java - 泛型的协方差

java - 通用容器工厂

java - 比较字符串时使用 equals 或 contentEquals

java - 在 volley 中发送 int 和 String 作为参数

java - 在以下情况下是否需要调用 ThreadLocal.remove

java - 泛型/参数化类 Java 命名空间

java - 为什么要编译?该代码似乎打破了对类型参数的限制

java - 是否可以在 XML 中设置 SwipeRefreshLayout 的配色方案?

java - 如果我遵循 ISO/IEC 5218,我的 'Person' 类应该有 int sex 吗?

generics - Kotlin:泛型、反射以及类型 T 和 T:Any 之间的区别