[英]How to prevent abstract method from being called?
我有一个超级超级(祖父母)抽象Bean类,在其init()
方法中调用loadData()
方法,如下所示:
public abstract class BaseFwkPageController extends PageControllerSupport {
public String init(){
cleanSession();
loadData();
return initNavigation;
}
public abstract void loadData();
// ...
}
现在,我不希望在子子类(子类)中调用此loadData()
方法。 我不能改变超级班。 我该如何实现?
重写该方法,并将新行为赋予子类。 你可以
@Override
public void loadData() {
// do nothing.
}
您无法隐藏该方法,降低其可见性或阻止任何人调用。
但是,您可以在子类中执行以下操作:
@Override
public void loadData() {
throw new UnsupportedOperationException("not supported");
}
或者,您可以放置一个interface
,仅公开通过该接口可以调用的内容。
Interface interface = new Implementation();
interface.callMethod();
这样,您将拥有完全的控制权。
您不能阻止在子级中调用该方法,因为该方法是公共的。 您可以将每个方法调用都计入一个私有实例变量中,并抛出一个异常,如果该异常已被多次调用(或您期望的调用次数)。
此外,您需要将该方法标记为final
方法,以便子级无法覆盖此方法并更改行为。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.