gpt4 book ai didi

java - 在 Java 中从 Scala 调用函数

转载 作者:行者123 更新时间:2023-12-02 02:28:17 24 4
gpt4 key购买 nike

我在 Scala 中有以下函数:

object Path {

def process: String => String =
???
}

然后尝试在 Java 中调用:

KStream<String, String> source = builder
.stream("PATHS-UPSERT-PRODUCER", Consumed.with(Serdes.String(), Serdes.String()))
.mapValues(value -> Path.process(value));

编译器提示:

[error]   required: no arguments
[error] found: java.lang.String
[error] reason: actual and formal argument lists differ in length
[error] .mapValues(value -> Path.process(value));

我做错了什么?

最佳答案

由于示例中的processString => String类型的函数,要调用函数,您需要调用apply() 就可以了。

当客户端代码使用括号 () 时,Scala 默认调用 apply,但 java 无法识别。

object Path {
def process: String => String = (input: String) => "processed"
}

scala> process("some value")
res88: String = processed

scala> process.apply("some value")
res89: String = processed

注意:scala 函数的扩展版本是,

  def process = new Function[String, String] {
override def apply(input: String) = "processed"
}

从java调用,

public class Test {

public static void main(String[] args) {
Path f = new Path();
System.out.println(f.process().apply("som input")); //prints processed
}
}

关于java - 在 Java 中从 Scala 调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47509774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com