我必须重构一个不小的现有项目。它包含大量数组声明和访问:
(X 不是通用类型,它只是一个占位符)。
声明:X[]
和 X[][]
,
访问:someArray[i]
和 someArray[i][j]
.
我必须重写所有内容才能使用通用列表:
声明:List<X>
和 List<List<X>>
,
访问:someList.get(i)
和 someList.get(i).get(j)
.
我找不到自动化这种重构的可能性,无论是在 Eclipse 中还是在 Netbeans(两个最新版本)中。
是否有一些工具可用于进行此类重构?
编辑:
该项目非常面向算法。不会触及算法的内部实现。但是必须改变对外部世界的暴露。大多数类都是以这样的方式创建的,它们只包含一些结果数组或数组的数组。
最佳答案
exposure to the external world must be changed
在那种情况下,我建议不要在所有地方更改它,而是:
- 仅更改
public
方法的返回类型 编写一个实用方法,如下所示:
public static List<List<X>> asList(X[][] x) { List<X[]> list = Arrays.asList(x); List<List<X>> newList = new ArrayList<List<X>>(list.size()); for (X[] xArray : list) { newList.add(Arrays.asList(xArray)); } return list; }
使用该方法更改每个
public
方法的唯一结果。即public List<List<X>> someAlgorithm(...) { // algorithm code X[][] result = ...; return Utils.asList(result); // add only this line }
关于Java:是否有一些工具能够将 X[][] 重构为 List<List<X>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2165658/