Annotation Type Mutable


  • @Target({METHOD,FIELD})
    @Retention(RUNTIME)
    public @interface Mutable
    Use in conjunction with Final or Accessor to indicate that whilst a target field is final in the target class, mutation within the mixin is intentional.

    Applying this annotation has the effect of removing the final modifier from the target field in order to avoid illegal access errors when a shadow visible outside the mixin class (eg. to derived or package-local mixins) is mutated. It also permits the mutation on Java runtimes which also check for mutation of private final variables (JRE 9 and later).