静态方法中的非静态变量"this"

Tom*_*máš 5 groovy

我读过这篇文章:https: //www.ibm.com/developerworks/java/library/j-javadev2-8/index.html

清单2中的抽象类Model具有静态变量数据存储区.

abstract class Model {
 static def datastore = DatastoreServiceFactory.datastoreService
  ...
Run Code Online (Sandbox Code Playgroud)

清单3中的Race类扩展了抽象类Model.

class Race extends Model {
 public Race(params){
  super(params)
 }
}
Run Code Online (Sandbox Code Playgroud)

在清单5和清单6 中,使用静态方法中的作者非静态变量数据存储(this.datastore).我想,静态方法是在Race类中.

static def findByName(name){
     def query = new Query(Race.class.simpleName)
     query.addFilter("name", Query.FilterOperator.EQUAL, name)
     def preparedQuery = this.datastore.prepare(query)
     if(preparedQuery.countEntities() > 1){
      return new Race(preparedQuery.asList(withLimit(1))[0])
     }else{
      return new Race(preparedQuery.asSingleEntity())
     }
    }
Run Code Online (Sandbox Code Playgroud)

这怎么可能?谢谢你的解释.
汤姆

hvg*_*des 4

编辑——你是对的,我之前完全走错了路。答案很简单,在groovy中,你可以在静态方法中使用'this'关键字。

http://groovy.codehaus.org/Differences+from+Java

当这样使用时,“this”指的是类,而不是实例。好极了。