gpt4 book ai didi

java - 仅当对象内部的方法完成时才返回对象

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:15 26 4
gpt4 key购买 nike

我正在使用 Parse.com 作为我的后端,并希望创建一个方法,将查询对象的列作为一个 Bundle 返回。我在返回时遇到问题,如何将返回推迟到查询完成?我想把它放在查询的 done 方法中,但这是不允许的,因为它是一个 void 方法。这是我的代码:

public static Bundle queryForExtras() {

final Bundle extras = new Bundle();

ParseQuery<Song> query = ParseQuery.getQuery(Song.class).fromPin(PIN_LABEL_SONG);
query.getFirstInBackground(new GetCallback<Song>() {
@Override
public void done(final Song song, ParseException e) {

if (e == null) {
extras.putString(COLUMN_SONGNAME, song.getSongname());
extras.putString(COLUMN_LYRICS, song.getLyrics());

// I WANT TO RETURN EXTRAS HERE

} else {
// Something went wrong
}
}
});

return extras;
}

我怎样才能实现我想要的行为?

最佳答案

由于 getFirstInBackground 显然是在后台执行的,您不能直接为方法 queryForExtras 返回值。如果你想使用 getFirstInBackground,你必须创建某种类型的监听器,一旦你收到包就会调用它。

然而,最简单的方法是使用 getFirst不在后台运行的方法。所以你可以直接访问 queryForExtras 中的结果:

public static Bundle queryForExtras() {
ParseQuery<Song> query = ParseQuery.getQuery(Song.class).fromPin(PIN_LABEL_SONG);
Song song = query.getFirst();

final Bundle extras = new Bundle();
extras.putString(COLUMN_SONGNAME, song.getSongname());
extras.putString(COLUMN_LYRICS, song.getLyrics());
return extras;
}

关于java - 仅当对象内部的方法完成时才返回对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31206651/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com