我已经在Android中看到过,有时当你覆盖一个方法时,它总是会调用超级类,而且每隔一段时间,你们中的一些人就无法删除这个调用,因为IDE显示编译时错误。所以问题是,是否可以强制调用另一个方法?如果是的话,我该怎么做?
答案 0 :(得分:3)
你可以使用android支持注释。首先,您需要在项目中使用支持注释:
dependencies {
compile 'com.android.support:support-annotations:22.2.0'
}
使用@CallSuper
注释。
为此,您可以编写自己的注释处理器来制作海关行为
查看更多:
http://tools.android.com/tech-docs/support-annotations https://netbeans.org/kb/docs/java/annotations-custom.html
答案 1 :(得分:2)
我认为您的意思是在IDE中获得运行时异常和警告。当您覆盖super.method()
时,无法在编译时强制执行method
。
您可以做的一件事是在超类方法中将boolean
翻转为true
。
public abstract class AbstractClass {
private boolean superCalled = false;
public void foo() { superCalled = true; }
void bar() {
foo();
if (!superCalled)
throw new IllegalStateException("You did not invoke super.foo()");
}
}
感谢@VinceEmigh通过将名为onCreate
的{{1}}设置为boolean
来指出mCall
以这种方式工作。 Here is the code
这适用于android,因为你不应该直接调用true
- 确定何时调用onCreate
的是android系统,而不是你。 android系统的编写者可以确保在每次调用后始终检查onCreate
。
答案 2 :(得分:0)
那么,对In [86]: res
Out[86]: [2, 0, 2, 1, 0, 7, 8]
的调用就是利用继承。它允许您逃脱该调用,这样您就不必实现超类中具有相同名称的方法已经实现的所有内容。这真是太棒了。
关于从方法内部调用另一个方法。你总是以某种形式或其他形式去做。函数可以有辅助方法;甚至可以调用纯粹的构造函数来调用方法内部的方法。