Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中,是否可以在另一个方法内部强制调用一个方法?_Java_Android - Fatal编程技术网

在Java中,是否可以在另一个方法内部强制调用一个方法?

在Java中,是否可以在另一个方法内部强制调用一个方法?,java,android,Java,Android,我在Android中看到过,有时候当你重写一个方法时,它总是伴随着一个对超类的调用,而且每隔一段时间,有些人就不能删除这个调用,因为IDE显示是一个编译时错误。所以问题是,有可能在另一个方法内部强制调用一个方法吗?如果是,我该怎么做呢?那么,调用super就是利用继承。它可以让您不受调用的影响,这样您就不必实现超类中具有相同名称的方法已经实现的所有内容。非常好 关于从方法内部调用另一个方法。你总是以某种形式去做。函数可以有助手方法;即使只调用一个构造函数,也可以从方法内部调用一个方法。我猜您的意

我在Android中看到过,有时候当你重写一个方法时,它总是伴随着一个对超类的调用,而且每隔一段时间,有些人就不能删除这个调用,因为IDE显示是一个编译时错误。所以问题是,有可能在另一个方法内部强制调用一个方法吗?如果是,我该怎么做呢?

那么,调用
super
就是利用继承。它可以让您不受调用的影响,这样您就不必实现超类中具有相同名称的方法已经实现的所有内容。非常好


关于从方法内部调用另一个方法。你总是以某种形式去做。函数可以有助手方法;即使只调用一个构造函数,也可以从方法内部调用一个方法。

我猜您的意思是在IDE中得到一个运行时异常和一个警告。当重写
method
时,无法在编译时强制执行调用
super.method()

您可以做的一件事是在超类方法中将
布尔值
翻转为
真值

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
通过将名为
mCall
boolean
设置为
true
以这种方式工作


这在android中起作用,因为您不应该直接调用
onCreate
——是android系统决定何时调用
onCreate
。android系统的编写者只需确保每次调用后总是检查
布尔值。

Youn可以使用android支持注释进行此操作。首先,您需要在项目中使用支持注释:

dependencies {
    compile 'com.android.support:support-annotations:22.2.0'
}
使用
@CallSuper
注释

为此,您可以编写自己的注释处理器,以创建自定义行为

请参阅更多:


您遇到了什么错误?你应该总是在你的帖子中包含你的错误。我没有收到任何错误,我只是想知道是否有可能在另一个方法中强制调用一个方法。关于Android Studio中的编译错误,我所说的是,它某种程度上证明了这样的事情是可能的,但我不知道它是如何实现的。我认为你不能强制调用任何方法,但正如你自己提到的,强制调用super是可能的。我想知道它是否是SDK的一部分,而不是Java中的一些语法。我假设您的意思是在IDE中出现运行时异常和警告。当您重写
method
时,无法在编译时强制执行调用
super.method()
。对于这个问题,代码示例非常有用
mCall
在方法结束时设置为
true
。@VinceEmigh谢谢,我没有意识到
活动
可供我们大家阅读。我将把这一点放在我的答案中。之所以称之为Android开源项目,是因为:)@cricket_007我已经为Android应用程序编写了大约两年了。我真该知道的!也有两年了,但我喜欢有时复制布局这就是你要找的。如果不调用super,则注释会导致编译错误。