java - 升级到 Java 1.5 及更高版本有哪些危险?

标签 java

我是Java的长期用户(但我是科学家而不是专业开发人员)。每当新版本出现时我都会升级,但通常一开始我只使用一小部分新功能,因为我并不总是有时间研究所有内容。

最近我了解到,除非我完全理解泛型,否则我在使用(或者在本例中不使用它们)时可能会遇到严重的危险 - 我没有意识到并且不明显的危险。 (我很高兴 Eclipse 警告了我,但我不明白这个警告!)

具体的例子是,现在(自 1.5 起)使用原始类型是不好的做法,并且 Class (而不是 Class<?>Class<MyStuff> )有严重的危险。请参阅Why is Class<?> preferred to Class .

我的问题是 - 由于升级到 Java 1.5(或 1.6、1.7)但使用旧代码或编程风格,我可能会遇到哪些其他危险并且没有意识到?

最佳答案

我会谈谈相反的情况(即好处):

我不知道危险(我已经将 Java 1.4 代码移植到 Java 6,没有出现任何问题,也将 java 5 代码移植到 java 6,java 意味着 JDK)。至于警告,它基本上是一个警告(因为您的代码将编译),您可以自由地解决这些警告。

就泛型而言,泛型用于编译器进行编译时检查,即一旦编译器获得元素类型(例如在 Collection 中),它就可以查看您是否使用过使用正确的强制转换正确地显示对象。

泛型是通过类型删除来实现的。它们仅在编译时存在,之后编译器将其删除。这是为了提供与使用原始类型的遗留代码的互操作性(例如 JDK 1.4 中的 List)。

我不知道这些是否会带来危险,但它不会影响您的 JDK 4 应用程序:

  • 自动装箱
  • 枚举
  • 可变参数
  • foreach
  • 注释

并且您可以享受 Java 集合框架的更好性能。

PS 从 JDK 1.4 迁移到新的 JDK(5 及更高版本)的唯一问题是您将面临 enum 问题(因为它是来自 JDK 的保留关键字) JDK 5 及更高版本)。除此之外,你还好。

关于java - 升级到 Java 1.5 及更高版本有哪些危险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4346521/

相关文章:

java - JUnit - 字符串检查失败,因为\n

java - 通过 Hibernate(不是 JDBC)从 blob 中检索图像

java - 将 postgresql 数据库添加到 travis

java - 使用 CSV-JDBC 驱动程序读取没有 header 的 CSV 文件

javascript - 在 java 中将数组从 javascript 转换为 JSONArray

java - 如何预测输出中的线程 ID?

java - 如何使用KeyListener绘制不同的图像?

javascript - Closure Compiler 将 < 替换为\x3c

java 公共(public) dbutils : multi-part identifier could not be bound

java - 在 Lucene 5.0 中按字母顺序对字符串字段进行排序