JSRUN 用代码说话

在Java中更改方法签名

编辑教程

在Java中更改方法签名

在 Java 中,可以使用更改方法签名重构为:

更改方法名称、返回类型和可见性范围。
添加新的参数并删除现有的参数。请注意,您还可以使用专用的提取参数重构来添加参数。
重新排列参数。
更改参数名称和类型。
添加和删​​除异常。
通过方法调用层次结构传播新的参数和异常。

示例

下表显示了执行相同更改方法签名重构的4种不同方法。

在所有情况下,类型为 double 的新参数 price该类型的新参数添加到方法 myMethod () 中。

这些示例显示了如何根据重构设置影响方法调用、调用方法 (myMethodCall ()) 和其他代码片段。

实例-1:

重构之前

public class MyClass {
// 这是其签名将被更改的方法:
    public void myMethod(int value) {
        // some code here
    }
}
public class MyOtherClass {
    public void myMethodCall(MyClass myClass) {
        double d=0.5;
        // 此处是方法调用:
        myClass.myMethod(1);
    }
}
// 要求 IntelliJ IDEA 更新所有的方法调用并且指定要传递给方法的默认值。

重构之后

public class MyClass {
    // 已经添加的新参数 price:
    public void myMethod(int i, double price) {
        // some code here
    }
}
public class MyOtherClass {
    public void myMethodCall(MyClass myClass) {
        double d=0.5;
        // 方法调用已相应更改:
        myClass.myMethod(1, 0.0);
    }
}
// 执行重构时, 0.0 被指定为默认参数值。

实例-2:

重构之前

public class MyClass {
    // 这是其签名将被更改的方法:
    public void myMethod(int value) {
        // some code here
    }
}

public class MyOtherClass {
    public void myMethodCall(MyClass myClass) {
        double d=0.5;
        // 此处是方法调用:
        myClass.myMethod(1);
    }
}
// 要求 IntelliJ IDEA 更新所有的方法调用,并且询问 IntelliJ IDEA 在方法调用附近查找合适类型的变量, 并将此变量传递给方法。在 IntelliJ IDEA 中,该选项被称为 Use Any Var.

重构之后

public class MyClass {
    // 已经添加的新参数 price:
    public void myMethod(int i, double price) {
        // some code here
    }
}
public class MyOtherClass {
    public void myMethodCall(MyClass myClass) {
        double d=0.5;
        // 方法调用已相应更改:
        myClass.myMethod(1, d);
    }
}
// 在方法调用附近, IntelliJ IDEA 找到了与新参数具有相同类型的变量 d。因此, 此变量在方法调用中使用。

实例-3:

重构之前

// 这是其签名将被更改的方法:
    public void myMethod(int value) {
        // some code here
    }
}
public class MyOtherClass {
    public void myMethodCall(MyClass myClass) {
        double d=0.5;
        // 此处是方法调用:
        myClass.myMethod(1);
    }
}
// 我们将要求 IntelliJ IDEA 保持方法调用不变, 但创建一个新的重载方法, 它将使用新的签名调用该方法。在 IntelliJ IDEA 中, 这种处理方法调用的方法被称为通过重载方法的委托。

重构之后

public class MyClass {
    // A new overloading method has been created:
    public void myMethod(int i) {
               myMethod(i, 0.0);
               }
    // 新添加的参数 price:
    public void myMethod(int i, double price) {
        // some code here
    }
}
public class MyOtherClass {
    public void myMethodCall(MyClass myClass) {
        double d=0.5;
        // 方法调用没有改变:
        myClass.myMethod(1);
    }
}
// 请注意, 新的重载方法具有旧的签名。但是, 它使用新的签名调用该方法。在执行重构时, 0.0 被指定为默认参数值。

实例-4:

重构之前

public class MyClass {
    // 这是其签名将被更改的方法:
    public void myMethod(int value) {
        // some code here
    }
}
public class MyOtherClass {
    // 该方法也会更改其签名:
    public void myMethodCall(MyClass myClass) {
        double d=0.5;
        // 此处是方法调用:
        myClass.myMethod(1);
    }
}
// 这一次, 我们将要求 IntelliJ IDEA 通过调用方法 myMethodCall () 将新参数传递给方法调用。

重构之后

public class MyClass {
    // 新添加的参数 price:
    public void myMethod(int i, double price) {
        // some code here
    }
}
public class MyOtherClass {
    // 新的参数价格通过调用方法传播到方法调用:
    public void myMethodCall(MyClass myClass, double price) {
        double d=0.5;
        // 方法调用已相应更改:
        myClass.myMethod(1, price);
    }
}

更改方法签名

在编辑器中,将光标放在要更改其签名的方法的名称中。

执行以下操作之一:

按 Ctrl+F6。
在主菜单中选择:重构丨 更改签名。
从上下文菜单中选择:重构丨更改签名。

请注意,如果重构覆盖其他方法的方法,IntelliJ IDEA 建议从基类修改方法,或仅修改选定的方法。

在 "更改签名" 对话框中,对方法签名进行必要的更改,并指定需要进行的其他相关更改。

您可以:

通过在可见性下选择必要的选项来更改方法可见性范围(访问级别修饰符) 能见度。
通过编辑 "返回类型" 字段的内容来更改方法返回类型。

请注意,此字段以及用于指定类型的其他字段中都有代码完成。

更改方法名称。要做到这一点,请在 "名称" 字段中编辑文本。
使用 "参数" 选项卡上的控件管理方法参数:
要添加新参数,请单击(Alt+Insert)并在相应字段中指定新参数的属性。如有必要,请选择 Use Any Var 选项。

添加参数时,可能需要将这些参数传播到调用当前方法的方法。

要删除参数,请在表中选择此参数,然后单击(Alt+Delete)。
要重新排序参数,请使用(Alt+Up)和(Alt+Down)。
要更改参数的名称、类型或默认值,请单击表中的此参数,并在相应的字段中进行必要的编辑。
沿调用当前方法的方法的层次结构传播新的方法参数(如果有)。

(可能有一些方法调用您正在更改其签名的方法,这些方法反过来可能会被其他方法调用,等等,您可以通过以下方式将所做的更改传播到当前方法的参数:调用方法的层次结构,并指定哪些调用方法应该受到影响,哪些不应该。)

如何传播新参数:

点击(Alt+G)。

在 "选择要传播新参数的方法" 对话框的左边的窗格中,展开必要的节点,并选中要将新参数传播到的方法旁边的复选框。

为了帮助您选择必要的方法,调用方法的代码和被调用的方法显示在对话框的右侧部分(分别在调用方法和被调用者方法窗格中)。

当您在左侧窗格中的方法之间切换时,右侧部分中的代码会相应更改。

点击“确定”。

使用异常类型列表和 "例外" 选项卡上的按钮管理方法异常。这些过程类似于用于管理方法参数的步骤。
沿着调用当前方法的方法的层次结构传播新的异常(如果有的话)。要启动此过程,请使用(Alt+X)。在所有其他方面,该过程与用于传播新方法参数的步骤类似。
指定如何处理方法调用。为此,请选择以下方法调用选项之一:
如果你想要修改方法调用,请选择 "修改"。
如果要使现有方法调用保持不变,请通过重载方法选择 "委托"。

要立即执行重构,请单击 "重构"。

若要在实际执行重构之前查看预期的更改并进行必要的调整,请单击 "预览"。

JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟