JRuby proc作为Java接口实现

时间:2015-09-28 08:48:23

标签: java ruby jruby jruby-java-interop

我的问题与closure conversion有关。我想测试一个从jruby代码实现功能接口的proc。

我有一个简单的过程,如

proc { print 'hey!' }

实现像

这样的java功能接口
public void doStuff()

由于客户端对象是

的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将该proc作为MyInterface的实现处理,以便能够调用实际方法doStuff而不是ruby规范call

所以,问题是如何告诉jruby将proc视为给定的java接口。

1 个答案:

答案 0 :(得分:0)

client = MyClient.new { print 'hey! }然后client.doHighLevelStuff应该可以正常运行...如果你有一个proc实例,只需将它作为一个块传递给(&proc)到构造函数中。