Scala:如何使用Java回调API

时间:2017-02-03 17:58:31

标签: java scala asynchronous

假设您正在使用第三方Java API,它通过回调异步流式传输数据。 如果我们在Scala中使用这样的API,我们会有哪些(基本的)设计选项?我是该语言的新手。这就是我的想法:

  1. 从野外提供Scala函数以用作回调(例如,创建一些包含回调函数的isAvailable
  2. 我们可以选择让此对象向Akka actor发送消息(传递数据)。通过这种方式,我们可以为演员系统提供输入数据。
  3. 数据打包 - 案例类......但请记住数据源自Java函数。在打包到案例类实例之前,我们唯一的选择是让Scala回调使用多个参数(字符串,整数,双精度)接收原始数据吗?

1 个答案:

答案 0 :(得分:1)

  
      
  1. 从野外提供Scala函数以用作回调(例如创建一些包含回调函数的对象)
  2.   

是。您应该使用Scala 2.12,将Scala函数编译为Java SAM,您可以将它们粘贴到Java API中。

  
      
  1. 我们可以选择让此对象向Akka actor发送消息(传递数据)。通过这种方式,我们可以为演员系统提供动力   输入数据。
  2.   

是的,你可以。这不是1的替代品,你可以在1中提到的功能中做些什么。

  
      
  1. 数据打包 - 案例类......但请记住数据源自Java函数。是我们对Scala回调的唯一选择   使用多个参数(字符串,整数,双精度数)接收原始数据   在打包案例类实例之前?
  2.   

不确定我理解。您想要放入一个期望与提供的类型不同的函数吗?在你的API中,你的API需要一个带有3个参数的回调处理程序,而你想提供一个带一个参数的案例类?我有一种感觉不会起作用。我宁愿在函数中实例化case case。