finagle в Java - функция, функция1 и т. д.

Как создать объект Function1 для использования в методе flatMap объекта Future finagle в Java?

Пробовал это:

Function1<String, String> f = new Function1<String, String>() {
    @Override
    public String apply(String s) {
        return null;
    }
};

Но это не работает:

Ошибка:(22, 73) Java: не является абстрактным и не переопределяет абстрактный метод andThen$mcVJ$sp(scala.Function1) в scala.Function1

1 ответ

Решение

Для полноты, вот ответ из моего двухмесячного комментария выше.

Сначала для некоторого импорта:

import scala.Function1;
import scala.runtime.AbstractFunction1;

И теперь вам нужно только определить apply метод:

Function1<String, String> f = new AbstractFunction1<String, String>() {
  public String apply(String s) {
    return s;
  }
};

Если вы используете Finagle, библиотека Util в Twitter также предоставляет аналогичный вспомогательный класс:

import com.twitter.util.Function;
import scala.Function1;

А потом:

Function1<String, String> f = new Function<String, String>() {
  public String apply(String s) {
    return s;
  }
};

Этот последний вариант, вероятно, лучше - мне никогда не нравилось явно использовать вещи из scala.runtime,

Другие вопросы по тегам