java - 如何从方法中的内部接口(interface)返回值?

标签 java android interface

我声明了这两个方法:

private Result mResult;

private void setResult(Result result){
    this.mResult = result;
}

private Result getResult(){
    new Executor(new OnResultListener() {
        @Override
        public void onResult(Result result) {
            setResult(result);
        }
    }).execute();
    return mResult;
}

我在执行 AsyncTask 时使用接口(interface)。我的问题是,我想将 onResult 方法的结果对象作为对象返回给 getResult() 方法。

如上图,我尝试通过setter来设置,但是好像不行。

我怎样才能成功呢? 提前致谢!

最佳答案

这里有两个选择。糟糕的是等到新线程完成。让我们不要那样做)。更好的方法是使用回调:

public static interface OnResultCallback {
    void onResult(Result result);
}

private void getResult(final OnResultCallback callback){
    new Executor(new OnResultListener() {
        @Override
        public void onResult(Result result) {
            setResult(result);
            callback.onResult(result);
        }
    }).execute();
}

关于java - 如何从方法中的内部接口(interface)返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37137637/

相关文章:

java - Android ListView 删除所有内容后仍然包含一项

c++ - C++ 中的 "Has a"关系,拥有一个类 "implement"多个抽象基类是最佳实践吗?

java - 删除未实现的方法

java - 如何更改使用 Google ReCaptcha 版本 2 时的错误消息?

java - 无法访问 Apereo CAS 站点

安卓 SSL 支持

java - Tapestry 错误 : #does not contain a public constructor needed to autobuild

java - 基于现有 Dataset<Row> 和添加的 HashMap 创建新的 Spark Dataset<Row>

java - 如何使用 jSTL 格式标记格式化货币值?

java - OnSeekBarChangeListener 在 Android 中总是评估为 null