Use interface where possible
Use Interface Where Possible refactoring delegates execution of the specified methods, derived from a base class/interface, to an instance of an ancestor class or an inner class, implementing the same interface.
-
In the editor, place the caret at a class which methods should be delegated to its parent class or interface.
-
On the main menu or on the context menu, select
. -
In the dialog that opens, select the parent object that will replace the usages of the current class.
- To replace the current class name in
instanceof
statements, check the option Use interface/superclass in instanceof.Note that if you use
instanceof
statements and leave this checkbox unselected, you may receive erroneous code, such as:if (secondInterface instanceof Class)This code will compile, but may produce undesired results.
-
Preview and apply the changes.
Example
Before | After |
---|---|
// File Class.java
public class Class implements Interface {
public void publicMethod() {
...
}
public void hiddenMethod() {
...
}
}
|
// File Class.java UNCHANGED
public class Class implements Interface {
public void publicMethod() {
...
}
public void hiddenMethod() {
...
}
}
|
// File Interface.java
public interface Interface {
int CONSTANT=0;
void publicMethod();
}
|
// File Interface.java UNCHANGED
public interface Interface {
int CONSTANT=0;
void publicMethod();
}
|
// File AnotherClass.java
public class AnotherClass {
Class firstClass;
Class secondClass;
public void method() {
firstClass.publicMethod();
firstClass.hiddenMethod();
secondClass.publicMethod();
if (secondClass instanceof Class) {
...
}
...
}
}
|
// File AnotherClass.java MODIFIED
public class AnotherClass {
Class firstClass;
Interface secondInterface;
public void method() {
firstClass.publicMethod();
firstClass.hiddenMethod();
secondInterface.publicMethod();
if (secondInterface instanceof Interface) {
...
}
...
}
}
|
Last modified: 08 March 2021