移動リファクタリング
コピーリファクタリングでは、別のパッケージにクラスのコピーを作成できます。また、ファイル、ディレクトリ、またはパッケージのコピーを別のディレクトリまたはパッケージに作成することもできます。
コピーを実行するリファクタリング
リファクタリングする識別子(エディター内のクラスまたはプロジェクトツールウィンドウ内のファイルなど)を選択します。
F5 を選択
コピーウィンドウで、コピーの名前と場所を指定し、OK をクリックします。
移動リファクタリングを使用すると、プロジェクトのソースルート間でパッケージとクラスを移動し、クラスメンバーを他のクラスに移動し、内部クラスを上位階層レベルに移動できます。
例: メソッドまたはフィールドがそれ自体のクラスよりも別のクラスで多く使用されている場合は、メソッドまたはフィールドで移動リファクタリングを実行できます。
移動を実行するリファクタリング
リファクタリングする識別子を選択します。
を選択します(または F6 を押します)。
リファクタリング用に選択した項目に応じて開くダイアログで、適切なオプションを指定し、リファクタリング(パッケージの場合は OK)をクリックします。可能であれば、プレビューをクリックして、潜在的な変更をプレビューすることもできます。
ターゲットディレクトリへのパス、ファイル名、パッケージ名を指定します。
静的メソッドを別のクラスに移動する
エディターでクラスを開き、移動する静的メソッドにキャレットを置き、F6 を押します。
メンバーの移動ダイアログで、次のオプションを指定します。
別のクラスに移動するメンバー (static のみ) フィールドで、別のクラスに移動するメソッドの横にあるチェックボックスをオンにします。このリストには、現在のクラスで検出されたすべての静的メソッドが表示されます。
メンバーをクラスに移動するフィールドに、メソッドのリストで選択したメンバーを移動するクラスの完全修飾名を入力します。
アイコンをクリックすると、既存のクラスを選択または検索できます。
リファクタリングをクリックするか、プレビューをクリックして実際のリファクタリングの前に結果を確認します。
インスタンスメソッドを別のクラスに移動する
このメソッドにプロジェクトの型パラメーターがある場合は、インスタンス(非静的)メソッドを別のクラスに移動できます。それ以外の場合は、まずこのメソッドを static
にする必要があります。

エディターで、インスタンスメソッドにキャレットを置き、F6 (
)を押します。開いているインスタンスメソッドの移動ダイアログで、次を指定します。
インスタンス式を選択するリストで、インスタンスメソッドを移動するターゲットクラスを選択します。潜在的な移動ターゲットのリストには、現在のクラスのメソッドパラメーターのクラスとフィールドのクラスが含まれます。
可視性領域で、ターゲットメソッドの優先度の変更を選択します。
"パラメーター参照" を置き換えるパラメーター名クラス <class_name> へフィールドに、パラメーターの希望の名前を入力します。リファクタリングが実行されると、移動されるメソッドのパラメーターが追加され、現在のクラスへのすべてのパラメーター参照が置き換えられます。
リファクタリングをクリックするか、プレビューをクリックして実際のリファクタリングの前に結果を確認します。
インスタンスメソッドの例
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(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;
}
}
|
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 {
}
}
|
関連ページ:

UML クラス図
IntelliJ IDEA を使用すると、プロジェクトのパッケージにダイアグラムを生成できます。このような図は、アプリケーションの実際のクラスとメソッドの構造を常に反映しています。パッケージの図を表示するプロジェクトツールウィンドウで、ダイアグラムを作成するパッケージを右クリックし、()を選択します。表示されるリストで、Java クラス図を選択します。IntelliJ IDEA は、クラスとその依存関係の UML ダイアグラムを生成します。VCS ローカルの変更を図として表示できます。を選択...

マイグレーション
マイグレーションリファクタリングにより、プロジェクトで使用されている古いパッケージやクラスと新しいパッケージとを簡単に切り替えることができます。IntelliJ IDEA にはデフォルトのマイグレーションマップが付属しています。このリファクタリングは UML クラス図からも利用できます。メインメニューで選択します。表示されるダイアログで、ドロップダウンリストから目的のマイグレーションマップを選択するか、または新規をクリックして新しいマップを作成します。マップの名前とオプションのマップの説明を指定...