Как реализовать черту Scala в коде Java - PullRequest
1 голос
/ 04 февраля 2020

В scala есть такая черта, как

trait Client {
  def get(requests: Seq[Request]): Future[Seq[Response]]
}

Как реализовать класс в Java с помощью некоторой фальшивой реализации, например return Future.successful (List.empty ())?

Я пытался

class KVClient implements Client {
    @Override
    public Future<Seq<Response>> get(Seq<Request> requests) {
      return Future.successful(List.empty());
    }

Но он не компилировался. Ошибка: «KVClient не является абстрактным и не переопределяет абстрактный метод get (Seq) в клиенте»

1 Ответ

0 голосов
/ 04 февраля 2020

если я правильно вас понял, вы пытаетесь вернуть результат или ошибку ответа в будущем.

Простое решение будет:

public CompletableFuture<Optional<?>> send() throws ExecutionException, InterruptedException {
      final CompletableFuture<Optional<?>> optionalCompletableFuture = CompletableFuture.supplyAsync(() -> "")
        .thenApplyAsync(f -> {
          if (isError(f)) {
            return Optional.empty();
          }
          return Optional.of(f);
        });
      return optionalCompletableFuture;

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...