3

我有一个项目,其中近 50 个类扩展了同一个父类。现在我在父类中添加一个抽象方法。因此,所有类都会产生编译时错误。在这种情况下,有没有办法在eclipse IDE中一次性在所有子类中添加这个方法?

4

5 回答 5

5

您不需要在这 50 个课程中的每一个课程中做一些有意义的(和不同的)事情吗?如果没有,那么您应该将实现放在父类中。如果是这样,那么在这种情况下,任何类型的“快速修复所有”都会适得其反。基本上,如果 eclipse 或任何其他 IDE 满足您的要求,它基本上会鼓励将小型编程任务更改为大型测试/QA 任务。

作为记录,我认为这个其他答案更优雅。

于 2013-02-21T09:08:16.467 回答
3

Eclipse 不支持这一点的简单答案。

为了补充Tim Bender 的答案,这样的功能会适得其反的原因是您无论如何都需要访问所有这些类以将主体添加到方法中。如果您要自动生成存根方法,那么您很可能会错过一个(或多个)。因此,您的简单编码任务将变成更具挑战性的调试任务……或者更糟糕的是,如果您没有像样的单元和系统测试程序。

最好一次添加一个方法,并使用编译器错误列表来提醒您还需要处理哪些类。(我也发现自己处于这种情况......而且这种方法有效。)

于 2013-02-21T09:24:07.847 回答
1

“在包资源管理器中选择顶级包。转到“问题”视图。应该有“Foo 类型必须实现继承的抽象方法 Parent.foo()”的错误列表(对于给定的类/方法名称)。右键单击错误,选择“快速修复”。您可以选择“添加未实现的方法”选项,然后单击“全选按钮”以选择所有子类。编辑:这甚至适用于每个父类的多个方法。” 从下面的链接复制,它的工作原理

如何在eclipse中对所有子类实现未实现的方法

于 2013-02-27T06:20:40.443 回答
0
  1. 向父类添加一个简单的方法

    /** 这应该在父类中被覆盖!!*/ @Deprecated public void foo() { }

  2. 在子类中实现方法。测试方法。

  3. 重复步骤 2,直到每个子类中都存在方法实现。
  4. 将父类中的原始方法抽象化

    公共抽象 void foo();

于 2013-02-21T09:22:56.603 回答
0

我认为如果你有 50 种不同的实现,你可能会遇到一些严重的设计问题。

如果您想在所有类中放置相同的代码,您应该只在抽象类中提供一个实现,这样编译器就不会抱怨。否则不要期望 Eclipse 知道您计划在所有类中编写什么实现。

如果您的方法最初什么都不做(您无法提供有意义的实现),您可以在抽象类中执行此操作:

void myMethod() {
    // does nothing yet
}
于 2013-02-21T09:27:37.370 回答