首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将代码提取到Eclipse中的静态方法中,将字段作为参数传递?

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

Stack Overflow用户
提问于 2015-06-12 03:47:36
回答 2查看 401关注 0票数 0

考虑到这个简化的场景:

代码语言:javascript
复制
private String name;

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

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

下面是期望的结果:(在实现大写之前)

代码语言:javascript
复制
private static String capitalize(String name) {
    return name;
}

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

有没有办法提取一个方法,或者引入一个将字段作为参数传递的间接方法?它不需要是一个单独的重构;组合起来仍然可以避免输入和人为错误。

EN

回答 2

Stack Overflow用户

发布于 2015-06-13 00:30:16

下面是一个可行的序列:

将字段引用"toCap"

  • Extract提取到一个新的局部变量(
  1. ),将其命名为“toCap”
  2. Extract a method from the reference to toCap,将其命名为capitalize
  3. Inline (Alt-Shift-I).

  1. toCap toCap

现在,您可以将capitalize移到您喜欢的位置。

对于这种情况,可能不值得这样做(直接创建静态capitalize方法更简单),但我可以看到,在更复杂的情况下,这种重构序列实际上可能会有所帮助。

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

票数 1
EN

Stack Overflow用户

发布于 2015-06-16 22:35:24

  1. 提取方法中您想要变为静态的部分。是的,这仍然会引用字段。将新方法作为参数传递给调用方,将字段作为参数传递(将有关无法从静态方法访问的字段的警告用作reference).
  2. CTRL-1调用方中提取的方法的警告,然后选择+ Change method: Add parameter

(删除))。

  • 使新方法提取调用方,将字段作为参数传递

提取的静态方法现在应该具有隐藏字段的参数,因为它们具有相同的名称。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30790100

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档