Type migration
The Type Migration refactoring lets you automatically change a member type (such as from integer to string), and data flow dependent type entries (such as method return types, local variables, parameters, and so on) across the entire project.
It also lets you automatically convert a variable or method return type between arrays and collections. If any conflicts are found IntelliJ IDEA displays the appropriate message.
In the editor, highlight or place the caret at a type you want to refactor.
Press Ctrl+Shift+F6 or in the main menu, go to
.In the dialog that opens, specify the new type and scope where to look for the usages.
Examples
f: int -> String
Before | After |
---|---|
int f;
void bar(int i) {}
void foo() {
bar(f);
}
|
String f;
void bar(String i) {}
void foo() {
bar(f);
}
|
I<String> -> I<Integer>
Before | After |
---|---|
interface I<T> {
T foo(T t);
}
class A implements I<String> {
String myString;
public String foo(final String s) {
if (s == null) {
return
myString;
}
return s;
}
}
|
interface I<T> {
T foo(T t);
}
class A implements I<Integer> {
Integer myString;
public Integer foo(final Integer s) {
if (s == null) {
return
myString;
}
return s;
}
}
|
myResult: ArrayList<String> -> String[]
Before | After |
---|---|
public class ResultContainer {
private ArrayList<String> myResult;
public String[] getResult() {
return myResult.toArray(new String[myResult.size()]);
}
}
|
public class ResultContainer {
private String[] myResult;
public String[] getResult() {
return myResult;
}
}
|
Type Migration dialog
This dialog appears when you invoke the Type Migration refactoring.
Item | Description |
---|---|
Migrate type | Use this list to specify the new type. |
Choose scope | Use this list to specify the migration scope. Click Browse , if necessary. |
Refactor | Click this button to launch refactoring to all usages in the specified scope. If there are any conflicts, IntelliJ IDEA will notify you about them. |
Preview | Click this button to browse items to be changed, exclude/include them from refactoring, and view the conflicts detected. |