初始化@Shared或setupSpec()中的对象



之间有什么区别

@Shared
MyObject myObject = new MyObject()

MyObject myObject
def setupSpec() {
    myObject = new MyObjec()
}

为什么我应该在第二个例子中使用@Shared注释?两者都只创建过一次,不是吗?

在第二个例子中,您可能会得到以下错误:

错误:(22,9)Groovyc:只有@共享和静态字段可以从这里访问

所以你可以选择其中一个选项:

  1. 在单行中使用@Shared注释和init字段

     @Shared
     MyObject myObject = new MyObject()
    
  2. 在单行中使用static和init字段

     static MyObject myObject = new MyObject()
    
  3. setupSpec方法中使用@Shared注释和init字段

     @Shared
     MyObject myObject
     def setupSpec() {
         myObject = new MyObject()
     }
    
  4. setupSpec方法中使用static和init字段

     static MyObject myObject
     def setupSpec() {
         myObject = new MyObject()
     }
    

相关内容

最新更新