V tomto článku si ukážeme, jak lze pomocí
RefactoringNG snadno zaměnit volání metody. Pro
příklad se vydáme na cestu časem do doby JDK 1.1, kdy
přibyla ve třídě java.awt.Component
metoda setEnabled. Tato metoda
nahradila metodu enable, která je od
verze 1.1 Deprecated. Náhradu volání
metody enable za volání metody setEnabled s parametrem true
popíšeme v RefactoringNG následujícím pravidlem:

 // p.enable() -> p.setEnabled(true)

// where p is a variable of type java.awt.Component or any subclass

MethodInvocation {

List<Tree> { },

MemberSelect [identifier: "enable"] {

Identifier [id: p, instanceof: "java.awt.Component"]

},

List<Expression> { }

} ->

MethodInvocation {

List<Tree> { },

MemberSelect [identifier: "setEnabled"] {

Identifier [ref: p]

},

List<Expression> {

Literal [kind: BOOLEAN_LITERAL, value: true]

}

}

Toto pravidlo nahradí všechna volání ve tvaru p.enable(), kde p je proměnná
typu java.awt.Component nebo libovolný
potomek.

Máte nějaké zkušenosti s RefactoringNG?
Napište mi o tom! Rád si přečtu, k čemu jste
RefactoringNG použili, co vám na něm vyhovuje a co
postrádáte.