有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用重构从类中删除泛型类型

我有这门课:

public class TimeIntCo<T> extends TimeValueCo<Integer>
{

}

我决定不再需要T类型,也不再在类中使用它(我知道它总是整数)
然而,我有很多类似于TimeIntCo<Integer>的类的引用
有没有一种方法可以使用Eclipse重构来删除T类型,而不会在引用中导致任何错误
我的意思是一步到位,而不是找到&;替换

编辑:更清楚地说——如果我只是从类中删除T,我有大约10000个错误,我不想手动执行,我更喜欢不使用find&;替换,因为我认为重构更安全。


共 (5) 个答案

  1. # 1 楼答案

    我怀疑这是否有重构。只需删除<T>,保存文件,然后检查并修复可能导致的任何编译错误。(如果未使用T类型参数,则不应存在任何要更正的编译错误…)


    @ohadshai评论:

    then I have about 10,000 errors in eclipse...

    我敢打赌,大多数问题都可以通过更改少量子类声明来解决

    Do you know any other IDE that does that? IDEA?

    不,我不知道。重构通常用于保留原始源代码含义的简单转换。这种转变不太可能做到这一点

  2. # 2 楼答案

    只需执行文本查找/替换TimeIntCo<Integer>->TimeIntCo在所有java类上

  3. # 3 楼答案

    如果T没有为您提供任何好处,请将其从类声明中删除:

    public class TimeIntCo extends TimeValueCo<Integer>
    {
    
    }
    

    它可以安全地保留在父类TimeValueCo

  4. # 4 楼答案

    在Eclipse中使用正则表达式搜索和替换(搜索|文件): 搜索:SomeClass\<.*\> 并替换为:SomeClass。 必要时对子类重复上述步骤

  5. # 5 楼答案

    引入一个超类

    public class TimeIntCoSup extends TimeValueCo<Integer> {
    
    }
    

    并更改TimeIntCo以扩展它

    public class TimeIntCo<T> extends TimeIntCoSup {
    
    }
    

    然后使用Eclipse的重构->;尽可能使用超类型