IntelliJ IDEA 2025.1 Help

移动和复制重构

复制 重构允许您在不同的包中创建类的副本。 它还允许您在不同的目录或包中创建文件、目录或包的副本。

执行复制重构

  1. 选择一个您想要重构的标识符(例如,编辑器中的类或 项目 工具窗口中的文件)。

  2. 在主菜单中,前往 重构 | 复制 或按 F5

  3. 复制 对话框中,指定副本的名称和位置,然后点击 OK

移动 重构允许您在项目的源根之间移动包和类,将类成员移动到其他类,并将内部类提升到上层层级。 例如,如果一个方法或字段在另一个类中使用得比在其自身类中更多,您可以对其执行移动重构。

执行移动重构

  1. 选择您想要重构的标识符。

  2. 在主菜单中,前往 重构 | 移动 或按 F6

  3. 在打开的对话框中,根据您选择的重构项,指定相应的选项,然后点击 重构 (OK 对于一个 package)。 您也可以点击 预览 ,如果可用,以预览潜在更改。 有关对话框的更多信息,请参阅 移动对话框部分的相关文章。

  4. 指定目标目录、文件名和包名的路径。

将静态方法移动到另一个类

  1. 在编辑器中打开您的类,将文本光标放置在您要移动的静态方法上,然后按 F6 (重构 | 移动)。

    移动静态成员 对话框打开。

  2. 到(完全限定名称) 字段中,输入要移动方法列表中所选成员的类的全限定名称。

    您可以点击 省略号 图标来选择或搜索现有类。

  3. 需要移动的成员(仅限 static) 字段中,选中您要移至另一个类的方法旁边的复选框。

    列表显示了当前类中检测到的所有静态方法。

  4. 点击 重构 以继续操作,或 预览 以在实际重构之前检查结果。

移动成员对话框

将实例方法移动到另一个类

如果此方法在您的项目中有一个类型参数,您可以将实例(非静态)方法移动到不同的类中。 在其他任何情况下,您需要首先使此方法 static

有关在没有类型参数的情况下移动实例方法的消息
  1. 在编辑器中,将文本光标放在实例方法上,然后按 F6 (重构 | 移动)。

    移动实例方法 对话框打开。

  2. 选择实例表达式 列表中选择目标类以移动实例方法。

    潜在移动目标列表包括当前类中的方法参数的类和字段的类。

  3. 可见性 区域中,选择目标方法的首选可见性修饰符。

  4. 为“parameter reference”参数选择一个名称 字段中,输入所需的参数名。

    执行重构时,参数将被添加到正在移动的方法中,所有对当前类的参数引用将被替换。

  5. 点击 重构 以继续操作,或 预览 以在实际重构之前检查结果。

移动实例方法对话框

实例方法示例

让我们将 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(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; } }
最后修改日期: 2025年 4月 24日