如何快速确定Java中是否重写了方法
如果可以确定未重写同一类中的另一个方法,则可以对我的方法之一进行优化。这只是一个很小的优化,因此反射是不可能的。我是否应该只创建一个受保护的方法,该方法返回是否覆盖了所讨论的方法,以便子类可以使其返回true?
回答:
我不会的 它违反了封装,并且在实现者不知道的情况下更改了类应该执行的约定。
但是,如果必须这样做,最好的方法是调用
class.getMethod("myMethod").getDeclaringClass();
如果返回的类是您自己的,则不会被覆盖;如果还有其他内容,则该子类已覆盖它。是的,这只是反思,但仍然很便宜。
不过,我确实喜欢您的保护方法。看起来像这样:
public class ExpensiveStrategy { public void expensiveMethod() {
// ...
if (employOptimization()) {
// take a shortcut
}
}
protected boolean employOptimization() {
return false;
}
}
public class TargetedStrategy extends ExpensiveStrategy {
@Override
protected boolean employOptimization() {
return true; // Now we can shortcut ExpensiveStrategy.
}
}
以上是 如何快速确定Java中是否重写了方法 的全部内容, 来源链接: utcz.com/qa/418462.html