Class, method or field annotation used for turning off Groovy's auto
visibility conventions. By default, Groovy automatically turns package
protected fields into properties and makes package protected methods
and classes public. This annotation allows this feature to be turned
off and revert back to Java behavior if needed.
Place it on classes, fields or methods of interest as follows:
@
PackageScope class Bar { // package protected
@
PackageScope int field // package protected; not a property
@
PackageScope method(){} // package protected
}
or for greater control, at the class level with one or more
PackageScopeTarget
values:
import static groovy.transform.PackageScopeTarget.*
@
PackageScope([CLASS, FIELDS])
class Foo { // class will have package protected scope
int field1, field2 // both package protected
def method(){} // public
}
@
PackageScope(METHODS)
class Bar { // public
int field // treated as a property
def method1(){} // package protected
def method2(){} // package protected
}
This transformation is typically only used in conjunction with a third-party
library or framework which relies upon package scoping.