有没有办法改变方法参数列表intellij?

时间:2016-07-04 14:29:05

标签: java methods intellij-idea parameters

为了概括,让我们举个这样的例子。

我有一个像这样的方法。

public void mymethod(int param1, String param2){
    //do something
}

我想把它改成这样的东西。

public void mymethod(int param1, String param2, String param3){
    //do something
}

有没有一种首选方法可以在不破坏用途的情况下使用intellij进行此操作?

4 个答案:

答案 0 :(得分:8)

您可以使用intellij执行以下操作。

使用Refactor - > Change Signature菜单,您可以:

  • 更改方法名称,返回类型和可见范围。
  • 添加新参数并删除现有参数。请注意,您还可以使用专用的Extract Parameter重构添加参数。
  • 重新排序参数。
  • 更改参数名称和类型。
  • 添加和删除例外。
  • 通过方法调用层次结构传播新参数和异常。

转到Refactor - > Change Signature菜单

在编辑器中,将光标放在要更改其签名的方法的名称中。 执行以下操作之一:

  • Ctrl + F6
  • 选择重构|在主菜单中更改签名。
  • 选择重构|从上下文菜单中更改签名(右键单击)。

有关详情,请查看here

答案 1 :(得分:1)

从干净的代码角度来看,答案很简单:不要这样做 - 你的方法越少越好!

添加第三个参数看起来像是走错路线给我。

可能你最喜欢的想法可以改变你所有的客户端代码,使用null或一些空字符串作为新参数...但是再次:那个“闻起来”太糟糕了我。

你看:你的代码一方面应该是冗长的,但要尽可能“简洁”。含义:您的方法的每个和任何参数确实存在,因为您的代码需要它们。所以,如果你要添加第三个参数,那么大部分时间都是null;并且只有在那些你想要它“意味着”某些东西的地方它是非空的,好吧,我的两分:不要这样做:显然,两个arg + null方法将做的不是三个-arg方法。如果是这样 - 保持两种不同的方法。

请记住:您添加到方法中的每个参数都会为您的测试范围增加更多变化。你真的不想那样。您的方法应尽可能简单,以便尽可能轻松地进行测试。

答案 2 :(得分:1)

您可以右键单击方法名称,然后refactor - > change signature(或命令 + F6 ,如果你在Mac上, Ctrl + F6 在Windows中,Linux)。

应打开一个新窗口,您可以在其中添加和删除新参数,以及更改方法的可见性。

答案 3 :(得分:1)

只是在这里添加一些遗漏点。

  • 使用IDE,添加参数,更改参数类型,更改方法的返回类型将不会自动化。

原因是IDE无法猜测并创建或替换已更改参数或方法用法的分配。

  • 添加/更改异常也几乎是半自动的,因为IDE不知道try / catch还是使用方法使用传递异常。你必须手动浏览每个地方并在每个地方做你想做的事。