IntelliJ IDEA 2016.2 Help

Type Migration

The Type Migration refactoring allows you to automatically change a member type (e.g. from integer to string), and data flow dependent type entries, like method return types, local variables, parameters etc. across the entire project. It also lets automatically convert variable or method return type between arrays and collections. If any conflicts are found IntelliJ IDEA warns you about them.

Example

f: int -> String

BeforeAfter
int f; void bar(int i) {} void foo() { bar(f); }
String f; void bar(String i) {} void foo() { bar(f); }

I<String> -> I<Integer>

BeforeAfter
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[]

BeforeAfter
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; } }

To change type, follow these steps

  1. In the editor, place the caret on the type to be refactored.
  2. On main menu, choose Refactor | Type Migration, or press Ctrl+Shift+F6.
  3. In the Type Migration dialog box, specify the new type and scope where to look for the usages.
  4. Click Preview and review the items that will be affected. If needed, exclude usages from refactoring. To do that, right-click usage in the Type Migration Preview and select Exclude. When done, click Migrate.

See Also

Last modified: 23 November 2016