IntelliJ IDEA 2025.1 Help

提取接口

通过 提取接口 重构,您有以下选项:

  • 根据类的方法创建一个接口。

  • 重命名原始类并实现新创建的接口。 在这种情况下,IntelliJ IDEA 会将所有原始类的用法更改为使用接口(如果可能)。

此外,在初始类中声明的 static final 字段可以移动到接口。 结果是,将创建一个包含特定方法和字段的接口。 因此,指定的类方法成为相应接口方法的实现。

示例

这里我们有一个类,并通过 Extract Interface 重构基于类的方法创建一个接口。

之前

之后

// 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(); } }

这是 Extract Interface 重构的另一个例子,当选择 重命名原始类并尽可能使用接口 选项时。

之前

之后

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. 要提取新的接口,请选择 Extract Interface 选项并指定新接口的名称。

    若要重命名原始类并使其成为新创建接口的实现,请选择 重命名原始类并尽可能使用接口 选项并指定原始类的新名称。 IntelliJ IDEA 将修改所有原始类的用法,仅在必要时使用实现类的用法。

  4. 指定新接口所在的软件包。

  5. 形成接口的成员 区域中选择您希望列入接口的类成员。 列表显示了类的所有方法及最终静态字段(常量)。

  6. JavaDoc 区域,选择要应用到 JavaDoc 的操作。

    • 要将其保留在当前位置,请选择 保留原样 选项。

    • 要将其复制到提取的界面,请选择 复制 选项。

    • 若要将其移至提取的接口,请选择 移动 选项。

  7. 点击 重构 继续。

  8. 点击 重构 准备好时。 如果 IntelliJ IDEA 在 重构预览 工具窗口中向您显示 查找 ,请查看建议的更改。 要提取接口并应用建议的更改,请点击 执行重构

最后修改日期: 2025年 4月 24日