2014-01-11 37 views
1

我需要我的JRuby方法收到什么是Java方法正在进行的报告,并采取相应的行动:传递一个Ruby块Java方法

def my_long_running_method 
    # ... do stuff ... 

    jObject.count_all_disk_files do |number_of_files| 
    stream.write "#{number_of_files} files found so far." 
    end 

    # ... do more stuff ... 
end 

我看到this question但我不明白我需要去做。

我已经认识Ruby很长一段时间了,还有一点Java。由于旧Java代码需要与新的Ruby代码集成,因此该项目需要成为JRuby。

回答

3

有关完整参考,请参见Calling Java From JRuby wiki page,特别是有关closure conversion的部分。你的问题的简短答案是你的Java方法count_all_disk_files将需要接受一个单一方法的接口(一个“功能接口”)。然后JRuby将能够使用该块中的代码自动实现该接口。

+1

这帮了我很多,甚至更多的官方文档。谢谢 –