【问题标题】:Why didn't JList parameterization break compatibility in Java?为什么 JList 参数化没有破坏 Java 中的兼容性?
【发布时间】:2017-07-16 21:01:57
【问题描述】:

Java的JList现在参数化了,参数化最早是在Java 1.7中引入的:type JList does not take parameter type <String>

为什么此类参数化不会破坏与使用 Java 1.6 编译器编译但在 Java 1.7 JRE 上运行的应用程序的兼容性?我自然会假设,当一个类所采用的类型参数数量如此重要时,兼容性就会中断。

类似的问题(可能有相同的答案):ExecutorService 的invokeAll 采用了Java 1.5 Collection>,但现在它采用了Collection>。为什么这不会破坏二进制兼容性?

相关:What is binary compatibility in Java?

【问题讨论】:

  • 欢迎来到 Type Erasure 的乐趣。
  • 这与 ArrayList 以及现在参数化的所有其他旧类型有何不同?

标签: java swing generics jlist executorservice


【解决方案1】:

引用JLS Sec 13.4.5:

添加或删除类的类型参数本身不会对二进制兼容性产生任何影响。

【讨论】:

    猜你喜欢
    • 2021-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2022-11-18
    相关资源
    最近更新 更多