【问题标题】:finagle in java - Function, Function1 etcjava中的finagle - 函数,函数1等
【发布时间】:2014-04-02 16:58:33
【问题描述】:

如何在 Java 中创建 Function1 对象以用于 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

【问题讨论】:

  • 查看我对类似问题的回答here。因为您不必担心 CanBuildFrom 部分,所以您会轻松一些,但 AbstractFunction1 应该正是您所需要的。
  • @TravisBrown 谢谢,它有效!您能否推荐一些有关 Scala/Java 互操作(例如 AbstractFunctionN 类)的更多读物?
  • Twitter 的 Scala School lesson on Java interoperability 是一个不错的起点。
  • @TravisBrown 非常感谢!

标签: java scala finagle twitter-util


【解决方案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,Twitter's Util library 也提供了类似的帮助类:

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 的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-15
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-28
    • 1970-01-01
    • 2021-09-19
    • 2023-04-10
    相关资源
    最近更新 更多