更改签名
最后修改时间:2023 年 10 月 27 日更改签名重构结合了可应用于方法签名或类签名的多项修改。
对于类来说,这种重构可以将类变成泛型并操作其类型参数。它会自动更正类的所有调用、实现和重写。
对于方法,此重构可以更改方法名称,添加、删除、重新排序和重命名参数和异常,以及通过调用层次结构传播新参数和异常。
就地更改签名
在编辑器中,开始添加或编辑类或方法的参数。IntelliJ IDEA 将显示在装订线中。
单击装订线中的图标或按。AltEnter
如果您要添加新参数,IntelliJ IDEA 将让您为其添加默认值并更新用法。
如果您正在编辑参数,IntelliJ IDEA 将为您更新用法。
单击更新以应用建议。
调用“更改签名”对话框
选择要更改签名的方法或类。
从上下文菜单中,选择重构 | 更改签名( )。CtrlF6
在根据您要更改签名的内容打开的对话框中,指定适当的选项并单击Refactor。如果您想查看潜在更改的预览,请单击“预览”。
更改类签名示例
让我们Param1, Param2
向类添加类型参数MyClass
。
字符串和整数是在“更改类签名”对话框中分别为Param1
和指定的默认值Param2
。
您还可以为参数添加有界值,以对传递给类型参数的内容进行一些限制。例如,添加Param3
默认值List
和有界值Collection
前 | 后 |
---|---|
|
|
提示
重构对于更改类签名及其所有用法中的参数顺序可能很有用。
笔记
对于Kotlin来说,这种重构的工作原理与 Java 相同。您可以按将 Java 代码转换为 Kotlin。CtrlAltShift0K
更改方法签名示例
您可以向方法添加参数并在“更改方法签名”对话框中指定不同的选项以获得不同的结果。
您还可以向方法添加异常,它们将在调用层次结构中传播。
笔记
更改方法签名重构适用于构造函数。但是,在这种情况下,名称和返回类型不能更改。
笔记
如果注释指定了方法契约
@Contract
,则更改方法签名重构也会尝试转换此类方法。然而,在某些情况下,重构可能会失败,您将需要手动调整合约。
让我们添加一个具有名称price
、类型double
和默认值的参数0.0
。
IntelliJ IDEA 向方法添加参数、更新方法调用并指定默认参数值。
前 | 后 |
---|---|
|
|
让我们更新所有方法调用,并在方法调用附近查找适当类型的变量并将其传递给方法。要实现这一点,请选中“使用任意变量”选项。
结果,IntelliJ IDEA 找到与新参数具有相同类型的变量d并在方法调用中使用它。
前 | 后 |
---|---|
|
|
让我们要求 IntelliJ IDEA 保持方法调用不变,但创建一个新的重载方法,该方法将使用新签名调用该方法。要实现这一点,请使用“通过重载方法委托”选项。
请注意,新的重载方法具有旧的签名。但是,它会使用新签名调用该方法。0.0
执行重构时指定为默认参数值。
前 | 后 |
---|---|
|
|
让我们 Alt+G通过调用方法将新参数传播到方法调用myMethodCall()
。
结果,新参数price
通过调用方法传播到方法调用,并相应地改变方法调用。
前 | 后 |
---|---|
|
|
让我们向类添加一个read
抛出异常的方法。IOException
MyClass
然后让我们创建一个新类ExtendsMyClass
来扩展MyClass
并重写原始read
方法。
现在,如果我们返回MyClass
并决定添加另一个异常,例如,TimeOutException
通过此重构,该方法read
也将更新子类。
前 | 后 |
---|---|
|
|
提示
更改签名对话框
物品 | 描述 |
---|---|
姓名 | 函数、方法或方法规范的名称。 |
参数 | 签名中的参数列表。在参数字段中,您可以使用参数执行以下操作:
|
感谢您的反馈意见!