IntelliJ IDEA 2026.1 Help

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

メンバーの移動ダイアログ

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

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

型パラメーターなしでインスタンスメソッドを移動する際のメッセージ
  1. エディターで、キャレットをインスタンスメソッドに置き、 F6 (リファクタリング | 移動) を押します。

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

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

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

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

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

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

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

Move Instance メソッドダイアログ

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

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

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 年 3 月 30 日