eclipse可以进行这种重构吗?
假设我有一个包含List的类:
class DomainObject {
private List list;
public List getList() { return list; }
}
然后一些使用该类的代码需要这样做:
domainObject.getList().get(23);
我想对此进行重构(并让其他所有引用都这样做):
domainObject.get(23);
我尝试了一些选项,但似乎无法找到一种方法(手动除外)
答案 0 :(得分:7)
试试这个:
DomainObject
正确实施List
(使用list
作为代表)getList()
返回this
getList()
"implements List"
并保留get()
方法另一个(更简单的)选项:
getList()
重命名为getMyListWithAUniqueNameAcrossTheProject()
(让Eclipse更新所有引用)"getMyListWithAUniqueNameAcrossTheProject()."
""
DomainObject.get(int)
答案 1 :(得分:0)
我认为你想要的是 Refactor - >介绍间接...... 。我不确定如何使用它,我认为你必须在List.get
上调用它,指定你想在DomainObject
中创建方法......
我试过这里,但是eclipse需要花费大量时间来计算它(我想要查找对该方法的所有引用)
修改:我找到了an article on the subject,这让我觉得这可能不是你想要的。但是,如果Eclipse足够聪明,我猜不会将该方法声明为静态。它仍然没有在这里完成,但我发现Bug 187227 Introduce Indirection is extremely slow这是由于它所适用的方法名称很常见,所以我想它在{{1}的情况下是不可用的} ...