gpt4 book ai didi

JavaFX : Supply arguments to Task

转载 作者:搜寻专家 更新时间:2023-11-01 01:41:21 27 4
gpt4 key购买 nike

我正在开发一个 JavaFX 项目,我在其中使用 Task 进行网络调用.不幸的是,我无法找到如何将参数传递给它。我搜索了很多链接,但没有一个提供。来自 java2s 的一个链接声称它们正在通过,但代码并未反射(reflect)这一点。

正如您从下面的代码中看到的,我使用了一个 for 循环并在 URL 中传递了 RestGroupAccount 的 ID 参数。这次没关系,因为无论如何我都需要所有的 RestCanvas。

但我很想知道如何给任务提供参数

代码:

private Task<List<RestCanvas>> fetchCanvases = new Task<List<RestCanvas>>() {

@Override
protected List<RestCanvas> call() throws Exception {
List<RestCanvas> list = new ArrayList<>();
try{
for(RestGroupAccount groupAccount : groupAccounts) {
RestTemplate rest = StaticRestTemplate.getRest();
HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.add("Cookie", "JSESSIONID=" + StaticRestTemplate.jsessionid);
HttpEntity<RestCanvas> requestEntity = new HttpEntity<>(requestHeaders);
rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
rest.getMessageConverters().add(new MappingJackson2HttpMessageConverter());
ResponseEntity<RestCanvas[]> responseEntity = rest.exchange(getCanvasForGroupAccount+groupAccount.getGroupId(), HttpMethod.GET, requestEntity, RestCanvas[].class);
RestCanvas[] restCanvasArray = responseEntity.getBody();
Collections.addAll(list, restCanvasArray);
}
}catch (Exception e){
e.printStackTrace();
}

return list;
}
};

如果需要更多信息,请告诉我。谢谢你。

最佳答案

我有类似的需求,我需要创建任务来接收文件并对其执行任务。在我的例子中,我需要在多个地方对文件做不同的事情,所以我创建了以下类:

public abstract class FileOperationTask<V> extends Task<V> {
protected File file;

public FileOperationTask(File file) {
this.file = file;
}
}

这允许我在我的 Controller 中定义以下内容:

FileOperationTask<List<RaffleTicket>> task = new FileOperationTask<List<RaffleTicket>>(file){
@Override
protected List<RaffleTicket> call() throws Exception {
this.file.toString();
return null;
}
};
new Thread(task).run();

如您所见,我能够对 File 对象进行操作,并且实现我的异步任务现在或多或少与实现普通任务相同。

关于JavaFX : Supply arguments to Task,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35749456/

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