Package: groovy.transform

## [Java] Annotation Type PackageScope

- groovy.transform.PackageScope

- 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, constructors 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, constructors 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 not frequently needed but can be useful in certain testing scenarios or when using a third-party library or framework which relies upon package scoping.
  Since:
    1.8.0

- - ### Element Summary

    Optional Element Summary
    Type | Name and Description
    --- | ---
    `PackageScopeTarget[]` | `value` Default: { PackageScopeTarget.CLASS }

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll`

- - ### Element Detail

    - #### public PackageScopeTarget[] value

      Default:
        { PackageScopeTarget.CLASS }