IntelliJ IDEA 2024.1 Help

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.

  1. In the editor, highlight or place the caret at a type you want to refactor.

  2. Press Ctrl+Shift+F6 or in the main menu, go to Refactor | Type Migration.

  3. In the dialog that opens, specify the new type and scope where to look for the usages.

  4. Preview and apply the changes.

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 the Browse button, 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.

Last modified: 11 February 2024