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.

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static @interface 
    Deprecated.
    Don't use this annotation, ever - Read the documentation.
  • Optional Element Summary

    Optional Elements
    Modifier and Type
    Optional Element
    Description
    Any annotations listed here are put on the generated method.
    Any annotations listed here are put on the generated method's parameter.
    If you want your with method to be non-public, you can specify an alternate access level here.
  • Element Details

    • 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:
      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

      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:
      {}