在这个给定的例子中,AbstractAnimal在框架之外有很多实现。然而,该框架被重构,以便现在存在WalkingAnimals。这是所有其他动物中的狗现在将继承WalkAnimal。例如,没有动物不走路。所有的继承者都应该重构。
这是一个Java框架,所以我将其称之为。但是可以更自由地更广泛地解释这个问题。因为它非常大,我们希望我们的IDE提供某种指示,表明当前继承AbstractAnimal的类应该被更改。因此我们想到了@Deprecated注释。但是,框架本身会抛出警告,因此它不一定是最干净的方法。
本质上,有一些类和方法,其访问级别将发生变化,以便只有框架才能使用它。我们想以尽可能清晰的方式在待重构的课程中宣布这一点(例如@Deprecated提供的警告和删除线)。我们的IDE是IntelliJ IDEA,我们正在使用Java 1.8。
我们正在寻找某种自动任务生成,因为开发人员可以查看警告列表并了解他们仍需要更改的内容。老板也希望看到正在取得进展,所以让这些数字变得非常可观。
提前感谢您的任何建议。
答案 0 :(得分:4)
您可以做的是向名为AbstractAnimal
的{{1}}添加抽象虚拟方法,该方法仅在youShouldNotExtendAbstractAnimalDirectly()
中具有实现。这将导致WalkingAnimal
中的编译失败,并且当开发人员尝试修复它时,他们会遇到该方法,并采取提示或拍摄自己的脚。
答案 1 :(得分:1)
您可以将walk方法提供给AbstractAnimal
类,默认实现为抛出OperationNotSupportedException
。
public void walk() {
throw new OperationNotSupportedException();
}
这是否真的取决于具体情况。
编辑: 更确切地说,正如Jeroen指出的那样,您只会发现新方法是否在运行时正确实现。因此,无论在何处使用,都可以捕获该异常;你必须做的越多,这个解决方案就越不可取。