gpt4 book ai didi

java - 如何在 Java 中使用游标迭代简单的回调?

转载 作者:行者123 更新时间:2023-11-30 01:40:52 26 4
gpt4 key购买 nike

这是我的问题的一个简单示例。假设我有一个返回以下内容的 API:

{
cursor: 5,
items: [
{ id: 0, value: "abc" },
{ id: 1, value: "abc" },
{ id: 2, value: "abc" },
{ id: 3, value: "abc" },
{ id: 4, value: "abc" }
]
}

然后在获取最后一项后:

{
cursor: -1,
items: [
{ id: 20, value: "abc" },
{ id: 21, value: "abc" },
{ id: 22, value: "abc" }
]
}

现在我有一个 Java 函数(为我编写的,我无法修改它),它需要一个游标和一个回调对象:

requestItems(5, new Callback() {
@Override
public void onResponse ( ItemResponse response )
{
response.getCursor(); // --> 10
response.getItems(); // --> ArrayList<Item>
}
});

我想重复调用这个方法,直到没有更多的项目为止。同步等效项是:

response = requestItems(0);
while (response.getCursor() > -1)
{
response = requestItems(response.getCursor());
}

我尝试使用递归,但这引发了编译时错误:

final Callback checkForMoreItems = new Callback() {
@Override
public void onResponse ( Response response )
{
if (reponse.getCursor() > -1)
requestItems(response.getCursor(), checkForMoreItems); // <-- Error line
else
continueExecution();
}
}

requestItems(0, checkForMoreItems);

这引发了错误:

error: variable checkForMoreItems might not have been initialized

你应该如何处理这样的递归回调?

最佳答案

尝试使用 this 而不是 checkForMoreItems:

requestItems(response.getCursor(), this);

这应该可以解决变量未初始化的问题,因为从技术上讲它是您创建的匿名类对象的属性。另一种解决方案可能是将整个代码分解到它自己的类文件中,在这种情况下,您还需要使用 this

关于java - 如何在 Java 中使用游标迭代简单的回调?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60065792/

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