2015-09-28 31 views
0

我的問題與closure conversion有關。我想測試一個從jruby代碼實現功能接口的過程。JRuby proc作爲Java接口實現

我有一個像

proc { print 'hey!' } 

簡單PROC實現像

public void doStuff() 

一個java功能接口由於客戶對象是一個Java對象,它是

public class MyClient { 
    private MyInterface iface; 

    public MyClient(MyInterface iface) { 
     this.iface = iface; 
    } 

    public void doHighLevelStuff() { 
     this.iface.doStuff(); 
    } 
} 

它的工作原理正確,因爲jruby設法將「proc」投射到java功能界面。所以,這部分沒關係。

我的問題是測試此代碼,從jruby調用它。我不知道如何告訴jruby將該過程視爲MyInterface的實現,以便能夠調用實際方法doStuff而不是Ruby規範call

所以,問題是如何告訴jruby將proc視爲給定的java接口。

回答

0

client = MyClient.new { print 'hey! }然後client.doHighLevelStuff應該工作得很好......如果您有一個proc實例,只需將它作爲塊傳遞給構造函數即可(&proc)。