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