将原始类型转换为泛型
此重构允许为每个原始类型创建安全且一致的参数类型,将不使用的泛型代码转换为泛型感知代码。
执行重构
- 选择要应用重构的实体。
- 单击右键展示上下文菜单,选择 。
- 在打开的“将原始类型转换为泛型”对话框中,提供重构选项。
- “删除过时的转换”:如果选中,CodeArts IDE将分析参数强制转换案例是否会被重构而更改。如果生成的参数类型与过期的参数类型相似,则将删除强制转换语句。
- “保留原始数组”:如果选中,数组不会更改为具有参数化类型的数组。否则,数组将转换为参数化类型。清除此复选框可能会有风险,并导致无法编译的代码。
- “保留Object参数化类型为原始类型”: 如果选择了具有java.lang.Object作为参数的对象,它们将被设置为原始类型。
- “执行详尽搜索”: 如果选中,则在所有节点上执行搜索。
- “泛型化对象”: 如果选中,java.lang.Object对象将转换为它们实际使用的类型。
- “生成通配符类型”:如果选中此选项,则尽可能生成通配符类型(即List<? extends String>等表达式)。
图1 将原始类型转换为泛型 - 单击“重构”以应用重构。
示例
例如,生成List和LinkedList类型。
重构前
“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"); } }