我想创建一个类lib,它将扩展Activity类并覆盖处理Android中后退按钮的方法(以及更多方法).我希望开发人员像我一样扩展我的类并继续使用他的活动类,但要强制他调用方法的超级.
知道B类如何防止其x方法在运行时被覆盖?
(我不想在B级中完成x)
好的,让我试着解释一下我想要实现的目标 - 我想创建一个类lib,它将扩展Activity类并覆盖处理Android中后退按钮的方法(以及更多方法).我希望开发人员像我一样扩展我的类并继续使用他的活动类,但要强制他调用方法的超级.如果他不这样做,我就麻烦了.
好的,让我试着解释一下我想要实现的目标 - 我想创建一个类lib,它将扩展Activity类并覆盖处理Android中后退按钮的方法(以及更多方法).我希望开发人员像我一样扩展我的类并继续使用他的活动类,但要强制他调用方法的超级.如果他不这样做,我就麻烦了.
一种解决方案是制作您的方法final,但让它调用您声明为的第二种方法abstract.然后让其他开发人员编写该abstract方法的实现.
例如,您的代码可能如下所示:
public final void method() {
// do your stuff
// ...
// call the method that the other developer wrote
doMethod();
}
protected abstract void doMethod();
Run Code Online (Sandbox Code Playgroud)
无论谁添加必须在方法结束时调用的功能,那么必须实现抽象方法以扩展您的类并编译其代码:
protected void doMethod() {
// do more stuff
}
Run Code Online (Sandbox Code Playgroud)
那你method()就像现在一样继续打电话.(但请记住,这并不妨碍其他人doMethod()直接打电话,因此您仍需要清楚地记录API.)
| 归档时间: |
|
| 查看次数: |
588 次 |
| 最近记录: |