首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Parse Java SDK转换为JRuby

问将Parse Java SDK转换为JRuby
EN

Stack Overflow用户
提问于 2012-08-15 10:35:20
回答 1查看 128关注 0票数 3

我想看看这个Java code在JRuby中是什么样子:

代码语言:javascript
复制
 ParseQuery query = new ParseQuery("MyClass");
 query.getInBackground(myId, new GetCallback() {
   public void done(ParseObject object, ParseException e) {
     if (e == null) {
       objectWasRetrievedSuccessfully(object);
     } else {
       objectRetrievalFailed();
     }
   }
 });

对我来说,最大的困惑是匿名内部类。这是我最好的初步猜测:

代码语言:javascript
复制
query = ParseQuery.new("GameScore")
query.getInBackground("xWMyZ4YEGZ", Class.new(GetCallback) do
  def done(object, e)
    #  ...
  end 
end.new)

更新:基于此进行编辑:http://www.ruby-forum.com/topic/188599#823271

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-19 04:50:20

用JRuby表达这一点的语法看起来很简单。JRuby有一个叫做“闭包转换”的特性,传递给方法的闭包可以被转换成合适的Java接口。从JRuby docs

这不仅适用于事件侦听器或Runnable,而且基本上适用于任何接口。当调用需要接口的方法时,JRuby会检查是否传递了块,并自动将该块转换为实现该接口的对象。

因此,您的代码将如下所示:

代码语言:javascript
复制
query.in_background 'xWMyZ4YEGZ' { |object, e|
  # do stuff
}

JRuby wiki上的'calling Java from JRuby'页面是解决此类问题的好资源。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11963400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档