|
对于方法和属性的重命名及Deprecated,我们则需要使用Structure Replace。通常我们有两种形式替换:普通文本及正则表达式,这也是许多IDE工具都包含的,而Structure Repalce则是基于Java代码的替换,也就是它能理解Java代码的含义,找到匹配的结果,这个也正是我们需要的:依据代码含义进行替换。让我们看一个例子:
java.awt.List类的addItem(String item)方法在jdk 1.1以后标识为过时方法,我们希望能够以新的方法add(String item)来代替过时方法,在通常的情况下,我们可以通过文本编辑软件进行替换,只需将addItem替换为add,但是这个替换太武断啦,addItem是一个很普通的方法名,你的自定义接口或类中可能也包含这个方法名,这个替换非常危险。下面让我们看看在IDEA如何进行这样的替换操作,达到最精确最准确地替换。
在Structure Replace对话框中,在“Search Template”栏输入$list$.addItem($variable$),这里不要以“;”结尾,“;”结尾表示java语句,不包含“;”表示为Java表达式,这里我们是表达式替换。在“Replace Template”栏输入$list$.add($variable$),然后我们点击“Edit Variables”按钮,在Edit Variables对话框将list变量的“Text/regular expression for java expression type”属性值设为“java.awt.List”,表示list变量的类型为java.awt.List,如果勾选“Apply constraint within type hierarchy”则表示List的子类也可以被替换。所有设定完毕后,我们点击“Find”按钮,如果查询到结果,在查询工具栏点击“Refactor”按钮,就可以完成替换。 |