对象在回调函数之外变为空

use*_*428 2 java android

我有一个回调函数,其结果我保存在类变量中,如下所示:

public class MyClass {

    private double myDouble;
    private MyObject myObject;

    public myMethod() {

        AnotherObject anotherObject = new AnotherObject();        
        anotherObject.getInfo(new Callback<String>() {
            @Override
            public void success(MyObject myObject) {
                MyClass.this.myObject = myObject; // I save myObject inside the class variable myObject
                Log.d("LOG", "Value of myObject " + MyClass.this.myObject);

            }

            // a method for the failure case
        });
        Log.d("LOG", "Value of myObject " + MyClass.this.myObject);

    }
}
Run Code Online (Sandbox Code Playgroud)

第一条日志消息给出了正确的值,我假设类变量myObject正确存储了对象值.但是,success函数外部的第二条日志消息将返回null.

如何在回调函数之外获取正确的对象值?

Fil*_*lev 6

这是一个回调,即本质上是异步的.您无法知道何时success()调用该方法,并且myObject在检查其值后可能会发生分配.确保Log.d()在回调完成后致电.