IntelliJ IDEA 2025.3 ヘルプ

移動およびコピーリファクタリング

コピーリファクタリングでは、別のパッケージにクラスのコピーを作成できます。また、ファイル、ディレクトリ、パッケージのコピーを別のディレクトリまたはパッケージに作成することもできます。

コピーを実行するリファクタリング

  1. リファクタリングする識別子(エディター内のクラスまたはプロジェクトツールウィンドウ内のファイルなど)を選択します。

  2. メインメニューで、リファクタリング | コピーに移動するか、F5 を押します。

  3. コピーダイアログで、コピーの名前と場所を指定し、OK をクリックします。

移動リファクタリングを使用すると、パッケージとクラスをプロジェクトのソースルート間、クラスメンバーを他のクラスに、内部クラスを上位階層レベルに移動できます。例: メソッドまたはフィールドが独自のクラスよりも別のクラスで使用されている場合は、そのメソッドまたはフィールドに対して移動リファクタリングを実行できます。

移動を実行するリファクタリング

  1. リファクタリングする識別子を選択します。

  2. メインメニューで、リファクタリング | 移動に移動するか、F6 を押します。

  3. 開いたダイアログで、リファクタリングに選択した項目に応じて適切なオプションを指定し、リファクタリング (パッケージの場合は OK) をクリックします。また、使用可能な場合は、プレビューをクリックして、潜在的な変更をプレビューすることもできます。ダイアログの詳細については、移動ダイアログセクションの関連記事を参照してください。

  4. ターゲットディレクトリへのパス、ファイル名、パッケージ名を指定します。

静的メソッドを別のクラスに移動する

  1. エディターでクラスを開き、移動する静的メソッドにキャレットを置き、F6 ( リファクタリング | 移動 ) を押します。

    static メンバーの移動ダイアログが開きます。

  2. To (完全修飾名) フィールドに、メソッドのリストで選択したメンバーを移動するクラスの完全修飾名を入力します。

    Ellipsis アイコンをクリックして、既存のクラスを選択または検索できます。

  3. 移動するメンバー (static のみ) フィールドで、別のクラスに移動するメソッドの横にあるチェックボックスを選択します。

    リストには、現在のクラスで検出されたすべての静的メソッドが表示されます。

  4. リファクタリングをクリックするか、プレビューをクリックして実際のリファクタリングの前に結果を確認します。

Move members dialog

インスタンスメソッドを別のクラスに移動する

このメソッドにプロジェクトの型パラメーターがある場合は、インスタンス(非静的)メソッドを別のクラスに移動できます。それ以外の場合は、まずこのメソッドを static にする必要があります。

Message on moving an instance method without a type parameter
  1. エディターで、キャレットをインスタンスメソッドに置き、F6 ( リファクタリング | 移動 ) を押します。

    インスタンスメソッドの移動ダイアログが開きます。

  2. インスタンス式を選択するリストから、インスタンスメソッドの移動先のターゲットクラスを選択します。

    潜在的な移動ターゲットのリストには、現在のクラスのメソッドパラメーターのクラスとフィールドのクラスが含まれます。

  3. 可視性領域で、ターゲットメソッドの優先度の変更を選択します。

  4. 「パラメーター参照」パラメーターの名前を選択するフィールドに、パラメーターの目的の名前を入力します。

    リファクタリングが実行されると、移動中のメソッドにパラメーターが追加され、現在のクラスへのすべてのパラメーター参照が置き換えられます。

  5. リファクタリングをクリックするか、プレビューをクリックして実際のリファクタリングの前に結果を確認します。

Move instance method dialog

インスタンスメソッドの例

getName インスタンスメソッドを Test クラスから Car クラスに移動しましょう。

import java.lang.reflect.InvocationTargetException; public class Test { public static void main(String[] args) throws Exception { Car c= new Car(); System.out.println(new Test().getName(c)); } String getName(Car car){ System.out.print(toString()); return car.name; } } class Car { String name = "Default Car"; Car() throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { } }
import java.lang.reflect.InvocationTargetException; public class Test { public static void main(String[] args) throws Exception { Car c= new Car(); System.out.println(c.getName(new Test())); } } class Car { String name = "Default Car"; Car() throws InvocationTargetException, NoSuchMethodException, InstantiationException, IllegalAccessException { } String getName(Test anotherObject){ System.out.print(anotherObject.toString()); return this.name; } }
2026 年 1 月 14 日