更新时间:2025-08-19 GMT+08:00
分享

将原始类型转换为泛型

此重构允许为每个原始类型创建安全且一致的参数类型,将不使用的泛型代码转换为泛型感知代码。

执行重构

  1. 选择要应用重构的实体。
  2. 单击右键展示上下文菜单,选择重构 > 将原始类型转换为泛型
  3. 在打开的“将原始类型转换为泛型”对话框中,提供重构选项。

    • “删除过时的转换”:如果选中,CodeArts IDE将分析参数强制转换案例是否会被重构而更改。如果生成的参数类型与过期的参数类型相似,则将删除强制转换语句。
    • “保留原始数组”:如果选中,数组不会更改为具有参数化类型的数组。否则,数组将转换为参数化类型。清除此复选框可能会有风险,并导致无法编译的代码。
    • “保留Object参数化类型为原始类型”: 如果选择了具有java.lang.Object作为参数的对象,它们将被设置为原始类型。
    • “执行详尽搜索”: 如果选中,则在所有节点上执行搜索。
    • “泛型化对象”: 如果选中,java.lang.Object对象将转换为它们实际使用的类型。
    • “生成通配符类型”如果选中此选项,则尽可能生成通配符类型(即List<? extends String>等表达式)。
    图1 将原始类型转换为泛型

  4. 单击“重构”以应用重构。

示例

例如,生成ListLinkedList类型。

重构前

“com\refactoring\source\ConvertTypes.java”文件内容如下:

package com.refactoring.source;
import java.util.LinkedList;
import java.util.List;

public class ConvertTypes {
    public void method() {
        List list = new LinkedList();
        list.add("string");
    }
}

重构后

“com\refactoring\source\ConvertTypes.java”文件内容如下:

package com.refactoring.source;
import java.util.LinkedList;
import java.util.List;

public class ConvertTypes {
    public void method() {
        List<String> list = new LinkedList<String>();
        list.add("string");
    }
}

相关文档