一次性在所有类中添加覆盖方法

时间:2013-02-21 09:04:13

标签: java eclipse

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

5 个答案:

答案 0 :(得分:5)

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

为了记录,我认为this other answer的陈述更为优雅。

答案 1 :(得分:3)

Eclipse不支持这个简单的答案。

要添加到Tim Bender's answer,这样的功能会适得其反的原因是您需要访问所有这些类,以便为方法添加实体。如果您要自动生成存根方法,则可能会错过一个(或更多)。因此,您的简单编码任务将变成更具挑战性的调试任务......或者更糟糕的是,如果您没有合适的单元和系统测试程序。

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

答案 2 :(得分:1)

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

How to implement unimplemented methods to all child classes in eclipse

答案 3 :(得分:0)

  1. 向父类添加一个简单的方法

    / **这应该在父类中重写!! * / @Deprecated public void foo(){ }

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

  3. 重复步骤2,直到每个子类中都存在方法实现。
  4. 在父类abstract

    中创建原始方法

    public abstract void foo();

答案 4 :(得分:0)

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

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

如果您的方法最初没有做任何事情(您无法提供有意义的实现),您可以在抽象类中执行此操作:

void myMethod() {
    // does nothing yet
}