Я пытаюсь перейти с Play 2.4 на Play 2.5. Используя руководство от Replaced F.Promise with Java 8's CompletionStage, я заменил F.Promise
, map
и flatMap
с предлагаемыми заменами из предыдущей ссылки (отраженный фрагмент изменений ниже).Play 2.5 Ошибки с Java 8 - неправильное количество аргументов типа и выражение лямбда не ожидаются здесь ошибка
public CompletionStage<Result> parallel() {
final long start = System.currentTimeMillis();
final CompletionStage<WSResponse, Long> getLatency = resp -> System.currentTimeMillis() - start;
CompletionStage<Long> googleLatency = WS.url("http://google.com").get().thenApplyAsync(getLatency);
CompletionStage<Long> yahooLatency = WS.url("http://yahoo.com").get().thenApplyAsync(getLatency);
return googleLatency.thenComposeAsync(googleResponseTime ->
yahooLatency.thenApplyAsync(yahooResponseTime ->
ok(format("Google response time: %d; Yahoo response time: %d",
googleResponseTime, yahooResponseTime)))
);
}
После запуска ./activator clean dist
, я получаю ошибку ниже:
[ошибка] /Play-2-JS-2.5/app/controllers/Java8Controller.java:74: неверное число аргументы типа; требуется 1 [ошибка] CompletionStage [ошибка] /Play-2-JS-2.5/app/controllers/Java8Controller.java:74: выражение lambda не ожидается здесь [error] resp -> System.currentTimeMillis() - start
по какой-то причине, он считает, что должен быть только один, а не два в разделе CompletionStage<WSResponse, Long> getLatency
, а также по какой-то причине это не нравится лямбда-выражение, даже если синтаксис перед новыми заменами API успешно работал в Play 2.4.
Я попытался вернуться к старым вызовам к тому, что отображается в https://github.com/btgrant-76/Play-2-Java-Scala-Java-8-Async-Comparison/blob/6a85cf31cfb804ef20bacf8e14d30ce46cc9307c/app/controllers/Java8Controller.java#L71-L83, однако это не дает лучших результатов. Бывал поиск в Интернете и поиск когда-то, но не уверен, как подойти к этому. Любые предложения с возможными примерами будут очень признательны.
Это сработало, спасибо Tanmay Patil! – gitness
Рад знать, что это помогло –