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

1

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

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

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

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

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

  • 0
    Смотрите мой ответ на подобный вопрос здесь . У вас это немного проще, так как вам не нужно беспокоиться о части CanBuildFrom , но AbstractFunction1 должен быть именно тем, что вам нужно.
  • 0
    @TravisBrown спасибо, все работает! Не могли бы вы порекомендовать почитать о взаимодействии Scala / Java (например, классы AbstractFunctionN)?
Показать ещё 2 комментария
Теги:
finagle
twitter-util

1 ответ

0
Лучший ответ

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

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

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

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

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

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

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.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню