我想看看这个Java code在JRuby中是什么样子:
ParseQuery query = new ParseQuery("MyClass");
query.getInBackground(myId, new GetCallback() {
public void done(ParseObject object, ParseException e) {
if (e == null) {
objectWasRetrievedSuccessfully(object);
} else {
objectRetrievalFailed();
}
}
});对我来说,最大的困惑是匿名内部类。这是我最好的初步猜测:
query = ParseQuery.new("GameScore")
query.getInBackground("xWMyZ4YEGZ", Class.new(GetCallback) do
def done(object, e)
# ...
end
end.new)发布于 2012-08-19 04:50:20
用JRuby表达这一点的语法看起来很简单。JRuby有一个叫做“闭包转换”的特性,传递给方法的闭包可以被转换成合适的Java接口。从JRuby docs
这不仅适用于事件侦听器或Runnable,而且基本上适用于任何接口。当调用需要接口的方法时,JRuby会检查是否传递了块,并自动将该块转换为实现该接口的对象。
因此,您的代码将如下所示:
query.in_background 'xWMyZ4YEGZ' { |object, e|
# do stuff
}JRuby wiki上的'calling Java from JRuby'页面是解决此类问题的好资源。
https://stackoverflow.com/questions/11963400
复制相似问题