自动将代码更新为Java5

自动将代码更新为Java5,java,Java,我有很多Java 1.4代码,我正在迁移到Java 5。我想修复所有关于在参数化类中使用原始类型的编译器警告,我想知道是否有一个工具可以自动转换如下内容: List myList = new ArrayList(); myList.add("foo"); String foo = (String) myList.get(0); 致: List myList=new ArrayList(); myList.add(“foo”); 字符串foo=myList.get(0); 我理解泛型非常复杂,

我有很多Java 1.4代码,我正在迁移到Java 5。我想修复所有关于在参数化类中使用原始类型的编译器警告,我想知道是否有一个工具可以自动转换如下内容:

List myList = new ArrayList();
myList.add("foo");
String foo = (String) myList.get(0);
致:

List myList=new ArrayList();
myList.add(“foo”);
字符串foo=myList.get(0);
我理解泛型非常复杂,因此不希望这样的工具能够在所有情况下选择最正确的参数化类型。但是,只要它能够处理简单的情况(如上述),并且不会破坏我的代码,我就会满意

类似地,我想将所有旧的skool循环更改为Java5中引入的简化for循环


有这样的工具吗?

我认为最安全的方法是为您的方法添加@SuppressWarnings(“rawtypes”)注释。因为您的代码已经在1.4中测试过了(我假设),并且以这种方式插入了类似泛型的语法可能会导致出现一些讨厌的bug。 您可以为suppresswarnings设置其他警告

还可以将此注释添加到类中

@SuppressWarnings("rawtypes") 
public class MyClass {}
虽然我想不出一个工具来做到这一点


至于for循环,在编写新代码时使用新的“for”循环是有意义的。因为它更容易。为什么要改变旧式循环?算了吧,它的语法没那么糟糕,当然也没那么难理解:)

我会使用Eclipse来实现这一点

选择需要升级的包结构,然后右键单击->重构->推断泛型类型参数


我想这是你需要的起点。

抑制警告的“安全”是什么?讨厌的bug是如何产生的?它不应该影响字节码,所以除了在添加泛型时意外地用auto complete将代码弄乱之外,我真的想不出如何通过添加泛型来嵌入bug。如果你做错了什么,那将是编译时错误,所以你会注意到它(这就是它所做的一切)。我的直觉是,通过添加泛型,你更有可能发现一个bug而不是创建一个bug,只要你小心并且有大量的单元测试(可能在进行时编写更多)。哈哈!很好,但讽刺的是,它可能比插入类泛型语法更安全。只有上帝知道这些集合在哪里传递。@naikus-我想更新我的代码以使用泛型类型,而不仅仅是抑制编译器警告。此外,由于类型擦除,我认为没有任何时候会引入运行时错误(尽管可能会引入编译时错误)。这听起来像是一个重构的时候。因此,您可以为泛型打开Eclipse警告,这样您就可以很容易地看到在何处会发生此类重构。
@SuppressWarnings("rawtypes") 
public class MyClass {}