我有一个项目,其中近50个类扩展了同一个父类。现在我在父类中添加一个抽象方法。由于这个原因,所有类都会产生编译时错误。 在这种情况下,有没有办法在eclipse IDE中一次性在所有子类中添加此方法?
答案 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)
向父类添加一个简单的方法
/ **这应该在父类中重写!! * / @Deprecated public void foo(){ }
在子类中实现方法。测试方法。
在父类abstract
中创建原始方法public abstract void foo();
答案 4 :(得分:0)
如果您有50种不同的实现方式,我认为您可能会遇到一些严重的设计问题。
如果你想在所有类中加入相同的代码,你应该只在抽象的代码中提供一个实现,这样编译器就不会抱怨。否则,不要指望Eclipse知道您计划在所有类中编写的实现。
如果您的方法最初没有做任何事情(您无法提供有意义的实现),您可以在抽象类中执行此操作:
void myMethod() {
// does nothing yet
}