java - 如何在Eclipse中将代码提取到静态方法中,将字段作为参数传递?

java - 如何在Eclipse中将代码提取到静态方法中,将字段作为参数传递?,第1张

鉴于此简化方案:

private String name;

private String getString() {
    return "Hello, "   name   "!";
}

我想用private static capitalize(String)方法将名称大写。如果我将name提取到方法(CTRL-2 M)中,那么我会得到一个引用private String capitalize()字段的name方法。

这是预期的结果:(在实施大写之前)

private static String capitalize(String name) {
    return name;
}

我真的希望capitalize是静态的,因为我可以将它移动到其他类(SHIFT-ALT-V)。此外,当有多个字段时,将它们移动到参数是很乏味的。

有没有办法提取方法,或引入将字段作为参数传递的间接?它不需要是一次重构;组合可能仍然可以节省打字和人为错误。

最佳答案:

2 个答案:

答案 0 :(得分:1)

这是一个可行的序列:

  1. 将字段引用name提取到新的本地变量(Alt-Shift-L),将其调用" toCap"
  2. toCap的引用中提取方法,将其称为"大写"
  3. 将修饰符static添加到capitalize
  4. 内联额外的局部变量toCapAlt-Shift-I)。
  5. 现在,您可以将capitalize移到您喜欢的地方。

    对于这个确切的场景,它可能不值得(直接创建静态大写方法更简单),但我可以看到,在更复杂的情况下,这个重构序列实际上可以帮助。

    此序列背后的一般模式是:在提取方法之前,使用新的局部变量准备要传递给方法的所有参数。提取方法后,内联不需要的局部变量。

    答案 1 :(得分:0)

    1. 提取要变为静态的方法部分。是的,这仍然会引用字段。
    2. 制作新方法static
    3. 在调用者中,将字段作为参数传递(使用有关无法从静态方法访问的字段的警告作为参考)。
    4. CTRL-1在调用方中提取的方法,然后选择 Change method: Add parameter
    5. 提取的静态方法现在应该具有隐藏字段的参数,因为它们具有相同的名称。

      本文经用户投稿或网站收集转载,如有侵权请联系本站。

发表评论

0条回复