1

如何创建 Function1 对象以在 Java 中 finagle 的 Future 对象的 flatMap 方法中使用?

试过这个:

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

但它不起作用:

错误:(22, 73) java: is not abstract and does not override abstract method andThen$mcVJ$sp(scala.Function1) in scala.Function1

4

1 回答 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.

于 2014-06-01T17:47:46.053 回答