Я работаю над проектом JavaFX, в котором я делаю сетевые вызовы с помощью Task. К сожалению, я не смог найти способ передать аргументы. Я искал много ссылок, но ни один из них не предоставляет. Одна ссылка из java2s утверждает, что они проходят, но код не отражает этого.JavaFX: аргументы снабжения для задачи
Как вы можете видеть из приведенного ниже кода, я использую for-loop и передаю параметр ID RestGroupAccount в URL-адресе. На этот раз все в порядке, потому что мне все равно нужен весь 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;
}
};
Если требуется больше информации, пожалуйста, дайте мне знать. Спасибо.
Если вам нужно использовать код внутри своей «задачи» более одного раза, вам следует подумать о создании неанонимного подкласса и либо создавать его каждый раз, когда вам это нужно, с помощью параметра построения, либо создать его один раз с помощью изменяемого параметра. –
@DmitryGinzburg Поскольку 'Задача' предназначена для использования в пользовательском потоке, использование изменчивых данных почти всегда является ошибкой, потому что это приводит к условиям гонки. Первый подход - это способ сделать это, при этом параметры передаются конструктору как неизменяемые объекты. –
@DmitryGinzburg: Когда я создаю конструктор внутри Task, он ожидает тип возврата, то есть он не имеет понятия о конструкторе. –