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