0

我的问题与闭包转换有关。我想测试一个从 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 接口。

4

1 回答 1

0

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

于 2015-10-08T10:20:23.107 回答