Java / Groovy回调方法及其范围(继承)

时间:2014-06-16 22:40:05

标签: java groovy callback

假设以下代码从groovy类中的方法中截取,该方法使用回调:

Service.groovy:

class Service {
    final Logger logger
}

QueryService.groovy:

class QueryService extends Service {
    def someMethod() { 
        Logger l = logger
        future.register(new SingleResultCallback<ArrayList<Document>>() {
            @Override
            void onResult(ArrayList<Document> result, MongoException e) {
                l.info('result: ' + result)      // works
                logger.info('result: ' + result) // fails
            }
        })
    }
}

我想知道两件事:

  • 为什么可以将记录器变量分配给局部变量 并从回调中访问它?为什么我无法访问最终的实例变量?回调方法是否会丢失 对类的引用,但仍然有方法范围 它是从哪个调用的?内部发生了什么?
  • 有没有办法仍然可以访问实例变量,而不必在每次使用回调之前分配它?

如果有人想知道groovy中的java引用。这是使用即将推出的mongodb java驱动程序。

0 个答案:

没有答案