我是Java的长期用户(但我是科学家而不是专业开发人员).每当新版本问世时我都会升级,但我最初只使用一小部分新功能,因为我并不总是有时间学习所有内容.
最近我了解到,除非我完全理解泛型,否则我可能会在使用时遇到严重危险(或者在这种情况下不使用它们) - 我不知道哪些危险并且不明显.(我很欣赏我被Eclipse警告但我不明白这个警告!)
具体的例子是,现在(从1.5开始)使用原始类型并且Class(而不是Class<?>或Class<MyStuff>)具有严重危险的不良做法.请参阅为什么Class <?>优先于Class.
我的问题是 - 由于升级到Java 1.5(或1.6,1.7)但使用我的旧代码或编程风格,我可能遇到的其他危险是什么并且没有意识到?
我会谈论相反的(即好处):
我不知道危险(我已经将Java 1.4代码移植到没有hickup的Java 6以及java 5代码到java 6,java意味着JDK).至于警告,它基本上是一个警告(因为你的代码将编译),你可以自由地解决这些警告.
至于Generics,Generics用于编译器的编译时检查,即一旦编译器具有元素类型(例如in Collection),它就可以看出你是否正确使用了对象并使用了正确的强制转换.
泛型是通过类型擦除实现的.它们仅在编译器擦除之后才在编译时出现.这是为了提供与使用原始类型的遗留代码的互操作性(例如List在JDK 1.4中).
我不知道这些是否会有危险,但它不会影响您的JDK 4应用程序:
并且您具有更好的Java Collections Framework性能.
PS从JDK 1.4迁移到新JDK(5及更高版本)的唯一问题是你将面临enum问题(因为它是来自JDK 5及更高版本的保留关键字).比那更好,你还可以.