Scala:如何使用Java回调API

Scala:如何使用Java回调API,java,scala,asynchronous,Java,Scala,Asynchronous,假设您使用的是第三方JavaAPI,它通过回调异步地传输数据如果我们在Scala中使用这样的API,我们有什么(基本的)设计选项?我对这种语言不熟悉。以下是我的想法: 从野外提供一个Scala函数用作回调函数(例如,创建一些包含回调函数的对象) 我们可以选择让这个对象向Akka参与者发送消息(传递数据)。通过这种方式,我们可以用输入数据为actor系统提供支持 数据打包--一个案例类。。。但是请记住,数据来自Java函数。Scala回调在打包到case类实例之前,是否只有使用多个参数(字符串、i

假设您使用的是第三方JavaAPI,它通过回调异步地传输数据如果我们在Scala中使用这样的API,我们有什么(基本的)设计选项?我对这种语言不熟悉。以下是我的想法:

  • 从野外提供一个Scala函数用作回调函数(例如,创建一些包含回调函数的
    对象
  • 我们可以选择让这个对象向Akka参与者发送消息(传递数据)。通过这种方式,我们可以用输入数据为actor系统提供支持
  • 数据打包--一个案例类。。。但是请记住,数据来自Java函数。Scala回调在打包到case类实例之前,是否只有使用多个参数(字符串、int、double)接收原始数据
  • 从wild中提供一个Scala函数用作回调函数(例如,创建包含回调函数的某个对象)
  • 对。您应该使用Scala 2.12,Scala函数被编译成Java SAMs,您可以将它们粘贴到Java API中

  • 我们可以选择让这个对象向Akka参与者发送消息(传递数据)。通过这种方式,我们可以用 输入数据
  • 是的,你可以。这不是1的替代方案,而是在1中提到的函数中执行的操作

  • 数据打包--一个案例类。。。但是请记住,数据来自Java函数。是Scala回调的唯一选项 使用多个参数(字符串、整数、双精度)接收原始数据 在打包case类实例之前

  • 我不太明白。您想在函数中加入一个与所提供的类型不同的类型?和中一样,您的API需要一个接受3个参数的回调处理程序,而您希望提供一个接受1个参数的回调处理程序,一个case类?我觉得这行不通。我宁愿在函数中实例化case类。

    您已经尝试了什么?这个特定的软件库仍然是纯Java,我有一个指定回调函数的接口。然后,每当我需要一个使用这些数据的类时,我就实现这个接口。为了注册数据,我将类引用传递给一个中间人,该中间人在数据从API传入时发送数据。假设JavaAPI需要
    回调(int、string、double)
    。你是说,我可以用这个原型提供一个Scala函数,然后实例化一个case类。我想我必须提供一个Java回调,它可以调用我的Scala回调。我的意思是,如果需要一个Java Lambda,那么可以放入一个Scala 2.12函数(我假设您提供一个Lambda作为回调函数)。这有意义吗?也许您可以提供一个代码片段,或者一个可以作为示例的公共JavaAPI,以确保我没有误解。另外,Scala类可以实现Java接口——如果我们不是在谈论Lambdas,而是一些规定了某些函数的任意Java接口,那么您也可以在Scala中实现它。