根据文档,我可以将一个块传递给一个需要接口的方法,该块将被转换为该接口的匿名实现。它太酷了!
但是,我有一个 Java 类的 Ruby 子类,它有一个应该返回实现接口的东西的方法。
// Java
public abstract class Parent {
public MyInterface getIt();
}
# Ruby
class Child < Parent
def getIt
# Need to return an implementation of MyInterface?
end
end
我曾尝试制作 aProc
和 a lambda
,但这些都不起作用。我可以向父级(在 Java 中)添加一个强制自动转换的方法
protected MyInterface passThrough(MyInterface mi) { return mi; }
然后这个工作:
def getIt
passThrough {|thing|
puts thing.inspect
}
end
不过,这似乎真的很hacky。这只是对 JRuby 工作方式的疏忽,还是我错过了一些替代解决方案?