インターフェースの抽出
インターフェースの抽出 リファクタリングでは、次のオプションがあります。
クラスのメソッドに基づいてインターフェースを作成します。
元のクラスの名前を変更すると、新しく作成されたインターフェースが実装されます。 このような場合、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 が両方とも実装したいかによって、次のコードが得られます:
抽出済みインターフェース は既存のものを拡張します:
抽出済みインターフェース:
ソースクラス は両方のインターフェースを実装しています。
ソースクラス:
抽出済みインターフェース:
インターフェースを抽出する
プロジェクト ビュー、 構造 ビューでクラスを選択するか、クラス内の任意の場所にキャレットを配置します。
メインメニューまたは選択項目のコンテキストメニューから、 を選択します。 「インターフェースの抽出 」ダイアログが表示されます。
新しいインターフェースを抽出するには、 インターフェースの抽出 オプションを選択し、新しいインターフェースの名前を指定します。
元のクラスの名前を変更して、新しく作成されたインターフェースの実装にするには、 可能であれば元のクラスの名前を変更してインターフェースを使用する オプションを選択し、元のクラスの新しい名前を指定します。 IntelliJ IDEA は、すべての元のクラスの使用箇所を、それがまだ必要な場合にのみ実装の使用箇所に変更します。
新しいインターフェースが配置されるパッケージを指定します。
インターフェースを形成するメンバー 領域のinterfaceに表示するクラスメンバーを選択します。 リストには、クラスのすべてのメソッドと最終的な静的フィールド(定数)が表示されます。
JavaDoc エリアで、 JavaDoc に適用するアクションを選択します。
そのままにしておくには、 そのまま オプションを選択します。
抽出したインターフェースにコピーするには、 コピー オプションを選択します。
抽出したインターフェースに移動するには、 移動 オプションを選択します。
続行するには リファクタリング をクリックします。
準備ができたら リファクタリング をクリックします。 IntelliJ IDEA が 検索 ツールウィンドウに リファクタリングプレビュー を表示している場合は、提案された変更を確認してください。 インターフェースを抽出して提案された変更を適用するには、 リファクタリング実行 をクリックします。