2015-09-28 69 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)。