【问题标题】:Intellij Idea Refactoring - How do I make multiple classes extend a base class?Intellij Idea Refactoring - 如何让多个类扩展一个基类?
【发布时间】:2019-04-24 17:25:41
【问题描述】:

我有 10 个 Java 类,它们具有相同的字段和相同的构造函数来初始化这些字段。我希望将重复的代码提取到一个超类中,然后所有 10 个类都应该扩展该超类。我想用 Intellij Idea 进行重构。

通过使用 Refactor > Extract > Superclass,我能够从 10 个类之一中提取所需的代码到一个名为 BaseClass 的超类中。现在,我想使用 Intellij 自动使剩余的 9 个类扩展 BaseClass。我该怎么做?

【问题讨论】:

  • 没有一个工具可以直接做到这一点——@Peter 是正确的,我在此基础上对他的答案投了赞成票。不过值得注意的是,您应该只在需要多态性的情况下使用继承——研究 Liskov 的替换原则以了解原因。此外,子类化非常困难,通常不需要。当你达到 10 个子类时,你必须开始质疑你的设计(并不是说它总是错误的,只是大量的子类是需要仔细审查的危险信号)。签出代码审查堆栈溢出。
  • 我能想到很多情况,其中 10 个子类是合理的设计。在大多数情况下,父类将是抽象的,在这种情况下 Liskov 并不真正适用;子类的实例不能替代父类的实例,因为没有这样的实例。

标签: intellij-idea


【解决方案1】:

AFAIK 没有这样的重构。

find duplicates and replace 重构也无济于事。

我认为,您必须手动执行此操作。

【讨论】:

  • 正如 Peter 正确提到的那样,在 IDEA 中没有现成的工具可以进行这种重构,请遵循创建的功能请求:youtrack.jetbrains.com/issue/IDEA-211646
  • @OlgaKlisho - 谢谢 chenqui 和 хорошего дня。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 1970-01-01
  • 2011-06-11
  • 1970-01-01
相关资源
最近更新 更多