在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+G)。
在 "选择要传播新参数的方法" 对话框的左边的窗格中,展开必要的节点,并选中要将新参数传播到的方法旁边的复选框。
为了帮助您选择必要的方法,调用方法的代码和被调用的方法显示在对话框的右侧部分(分别在调用方法和被调用者方法窗格中)。
当您在左侧窗格中的方法之间切换时,右侧部分中的代码会相应更改。
点击“确定”。
使用异常类型列表和 "例外" 选项卡上的按钮管理方法异常。这些过程类似于用于管理方法参数的步骤。 | |
---|---|
沿着调用当前方法的方法的层次结构传播新的异常(如果有的话)。要启动此过程,请使用![]() |
|
指定如何处理方法调用。为此,请选择以下方法调用选项之一: | |
如果你想要修改方法调用,请选择 "修改"。 | |
如果要使现有方法调用保持不变,请通过重载方法选择 "委托"。 |
要立即执行重构,请单击 "重构"。
若要在实际执行重构之前查看预期的更改并进行必要的调整,请单击 "预览"。
Mos固件,小电视必刷固件
ES6 教程
Vue.js 教程
JSON 教程
jQuery 教程
HTML 教程
HTML 5 教程
CSS 教程
CSS3 教程
JavaScript 教程
DHTML 教程
JSON在线格式化工具
JS在线运行
JSON解析格式化
jsfiddle中国国内版本
JS代码在线运行
PHP代码在线运行
Java代码在线运行
C语言代码在线运行
C++代码在线运行
Python代码在线运行
Go语言代码在线运行
C#代码在线运行
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。
大家可以一起参与进共编,让零散的知识点帮助更多的人。
X

选择支付方式:


立即支付

¥
9.99
无法付款,请点击这里
金额: 0 元
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟