【发布时间】:2016-11-22 18:32:50
【问题描述】:
我有一个 java 构造函数,它以函数式接口为参数:
public ConsumerService(QueueName queue, Consumer<T> function) {
super(queue);
this.function = function;
}
我正在尝试在 scala 中使用此构造函数,但编译器抱怨说它无法解析构造函数。我尝试了以下方法:
val consumer = new ConsumerService[String](QueueName.CONSUME, this.process _)
val consumer = new ConsumerService[String](QueueName.PRODUCE, (s: String) => this.process(s))
我也尝试在运行时强制转换函数 - 但这给我留下了 ClassCastException:
val consumer = new ConsumerService[String](QueueName.CONSUME, (this.process _).asInstanceOf[Consumer[String]])
如何将 scala 函数作为 java 函数接口参数传递?
【问题讨论】:
-
stackoverflow.com/questions/29684894/… 但那里也没有真正的答案......
-
那是另一回事,因为不涉及 Scala
标签: java scala functional-programming