IntelliJ IDEA 2024.3 ヘルプ

インターフェースの抽出

インターフェースの抽出リファクタリングでは、次のオプションがあります。

  • クラスのメソッドに基づいてインターフェースを作成します。

  • 元のクラスの名前を変更すると、新しく作成されたインターフェースが実装されます。このような場合、IntelliJ IDEA は元のクラスのすべての使用箇所を、可能な限りインターフェースを使用するように変更します。

さらに、初期クラスで宣言された静的最終フィールドは、インターフェースに移動できます。その結果、特定のメソッドとフィールドを含むインターフェースが作成されます。これにより、指定されたクラスメソッドは、対応するインターフェースメソッドの実装になります。

サンプル

ここではクラスがあり、インターフェースの抽出リファクタリングを実行して、クラスのメソッドに基づいてインターフェースを作成します。

// File AClass.java class AClass { public static final double CONSTANT = 3.14; public void publicMethod() { } public void secretMethod() { } }
// File AClass.java class AClass implements AnInterface { public void publicMethod() { } public void secretMethod() { } // File AnInterface.java public interface AnInterface { double CONSTANT = 3.14; void publicMethod(); } }

可能であれば元のクラスの名前を変更してインターフェースを使用するオプションが選択されている場合のインターフェースの抽出リファクタリングの別の例

public class FormerAClass implements AClass { public void publicMethod() { } public void secretMethod() { } }
public interface AClass { double CONSTANT=3.14; void publicMethod(); }

すでに別のインターフェースを実装しているクラスからインターフェースを抽出することができます。AnInterface を実装したクラスからインターフェースを抽出しましょう。AnotherInterface (抽出されたインターフェース)が AnInterface (既存のもの)を拡張するか、ソース AClass が両方とも実装したいかによって、次のコードが得られます:

抽出済みインターフェースは既存のものを拡張します:

class AClass implements AnotherInterface { public void publicMethod() { //some code here } public void secretMethod() { //some code here } }

抽出済みインターフェース :

public interface AnotherInterface extends AnInterface { }

ソースクラスは両方のインターフェースを実装しています。

ソースクラス :

class AClass implements AnInterface, AnotherInterface { public void publicMethod() { //some code here } public void secretMethod() { //some code here } }

抽出済みインターフェース :

public interface AnotherInterface { }

インターフェースを抽出する

  1. プロジェクトビュー、構造ビューでクラスを選択するか、クラス内の任意の場所にキャレットを配置します。

  2. メインメニューまたは選択項目のコンテキストメニューから、リファクタリング | 抽出 | インターフェースを選択します。「インターフェースの抽出」ダイアログが表示されます。

  3. 新しいインターフェースを抽出するには、インターフェースの抽出オプションを選択し、新しいインターフェースの名前を指定します。

    元のクラスの名前を変更して、新しく作成されたインターフェースの実装にするには、可能であれば元のクラスの名前を変更してインターフェースを使用するオプションを選択し、元のクラスの新しい名前を指定します。IntelliJ IDEA は、すべての元のクラスの使用箇所を、それがまだ必要な場合にのみ実装の使用箇所に変更します。

  4. 新しいインターフェースが配置されるパッケージを指定します。

  5. インターフェースを形成するメンバー領域のインターフェースに表示するクラスメンバーを選択します。リストには、クラスのすべてのメソッドと最終的な静的フィールド(定数)が表示されます。

  6. JavaDoc エリアで、JavaDoc に適用するアクションを選択します。

    • そのままにしておくには、そのままオプションを選択します。

    • 抽出したインターフェースにコピーするには、コピーオプションを選択します。

    • 抽出したインターフェースに移動するには、移動オプションを選択します。

  7. 続行するにはリファクタリングをクリックします。

  8. 準備ができたらリファクタリングをクリックします。IntelliJ IDEA が検索ツールウィンドウにリファクタリングプレビューを表示している場合は、提案された変更を確認してください。インターフェースを抽出して提案された変更を適用するには、リファクタリング実行をクリックします。

関連ページ:

インターフェースの抽出ダイアログ

インターフェースの抽出の使用の詳細については、抽出インターフェースのセクションを参照してください。インターフェースを抽出この読み取り専用フィールドには、インターフェースを抽出するクラスを含むソースパッケージの名前が表示されます。インターフェースの抽出このオプションを選択すると、IntelliJ IDEA は新しいインターフェースを抽出しますが、それをすぐには使用せず、ソースコードも変更されません。インターフェース名新しいインターフェースの名前を入力します。インターフェースの抽出オプションが選択さ...

フィールドの導入

フィールドの導入リファクタリングでは、新しいフィールドを宣言し、選択した式で初期化することができます。元の式はフィールドの使用箇所に置き換えられます。その場でフィールドを抽出するフィールドに抽出するコード部分内にキャレットを置きます。を押すか、メインメニューでに移動します。導入する式をフィールドとして選択します。IntelliJ IDEA がコード内で複数の出現箇所を検出した場合、どの出現箇所を置き換えるかを指定できます。を 2 回押してフィールドの導入ダイアログを開くと、可視性オプションや変数...

メソッドの抽出

メソッドの抽出リファクタリングを使用すると、グループ化できるコードフラグメントを取得し、別のメソッドに移動して、古いコードをメソッドの呼び出しに置き換えることができます。メソッドを抽出するとき、変数を確認する必要があります。出力変数が 1 つの場合、抽出されたメソッドの戻り値として使用されます。複数の出力変数がある場合、メソッドの抽出リファクタリングが適用されず、エラーメッセージが表示されます。この場合、メソッドの抽出を動作させるためのいくつかの回避策があります。例: すべての出力値を含む特別な...