Package lombok

Annotation Type With


  • @Target({FIELD,TYPE})
    @Retention(SOURCE)
    public @interface With
    Put on any field to make lombok build a 'with' - a withX method which produces a clone of this object (except for 1 field which gets a new value).

    Complete documentation is found at the project lombok features page for @With.

    Example:

         private @With final int foo;
     
    will generate:
         public SELF_TYPE withFoo(int foo) {
             return this.foo == foo ? this : new SELF_TYPE(otherField1, otherField2, foo);
         }
     

    This annotation can also be applied to a class, in which case it'll be as if all non-static fields that don't already have a With annotation have the annotation.

    • Optional Element Summary

      Optional Elements 
      Modifier and Type Optional Element Description
      With.AnyAnnotation[] onMethod
      Any annotations listed here are put on the generated method.
      With.AnyAnnotation[] onParam
      Any annotations listed here are put on the generated method's parameter.
      AccessLevel value
      If you want your with method to be non-public, you can specify an alternate access level here.
    • Element Detail

      • value

        AccessLevel value
        If you want your with method to be non-public, you can specify an alternate access level here.
        Returns:
        The method will be generated with this access modifier.
        Default:
        lombok.AccessLevel.PUBLIC
      • onMethod

        With.AnyAnnotation[] onMethod
        Any annotations listed here are put on the generated method. The syntax for this feature depends on JDK version (nothing we can do about that; it's to work around javac bugs).
        up to JDK7:
        @With(onMethod=@__({@AnnotationsGoHere}))
        from JDK8:
        @With(onMethod_={@AnnotationsGohere}) // note the underscore after onMethod.
        Returns:
        List of annotations to apply to the generated method.
        Default:
        {}
      • onParam

        With.AnyAnnotation[] onParam
        Any annotations listed here are put on the generated method's parameter. The syntax for this feature depends on JDK version (nothing we can do about that; it's to work around javac bugs).
        up to JDK7:
        @With(onParam=@__({@AnnotationsGoHere}))
        from JDK8:
        @With(onParam_={@AnnotationsGohere}) // note the underscore after onParam.
        Returns:
        List of annotations to apply to the generated parameter in the method.
        Default:
        {}