2014-01-11 69 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

這幫了我很多,甚至更多的官方文檔。謝謝 –