我想採取不同的行動時,顯示或隱藏一個SWT菜單,所以我使用的是類中添加一個MenuListener到Menu如何在jruby中使用閉包轉換實現特定的接口方法?
如果我創建的偵聽器,並通過add_menu_listener我可以添加類的一個實例分別檢測顯示事件和隱藏事件。例如使用下面的Listener類:
class MyListener
include MenuListener
def menu_shown e
puts "#{e} was a show event"
end
def menu_hidden e
puts "#{e} was a Hide event"
end
end
,然後經由
my_menu.add_menu_listener MyListener.new
聽者添加到菜單將打印不同的信息時,將顯示VS隱藏菜單。
我還可以使用「封閉的轉換」,例如,這將產生一個消息每當菜單顯示或隱藏添加偵聽器。
my_menu.add_menu_listener { |e| puts "#{e} was a menu event" }
jruby wiki的這兩部分似乎涵蓋了jruby中的實現接口。
https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby#implementing-java-interfaces-in-jruby https://github.com/jruby/jruby/wiki/CallingJavaFromJRuby#closure-conversion
第二部分似乎表明,這種「封閉轉換」的方法應該對任何接口工作,但我不能想出了把它分離出兩個不同的方法。
有誰知道如何使用這個「封閉轉換」計劃,單獨實現每個特定接口的方法呢?