This feature is considered 'workaround status' - it exists in order to allow users of lombok that cannot work without this feature to have access to it anyway. If we find a better way to implement this feature, or some future java version introduces an alternative strategy, this feature can disappear without a reasonable deprecation period. Also, this feature may not work in future versions of javac. Use at your own discretion.
Most annotations that make lombok generate methods or constructors can be configured to also make lombok put custom annotations on elements in the generated code.
@Getter
, @Setter
, and @Wither
support the onMethod
option, which will put the listed annotations on the generated method.
@AllArgsConstructor
, @NoArgsConstructor
, and @RequiredArgsConstructor
support the onConstructor
option which will put the listed annotations on the generated constructor.
@Setter
and @Wither
support onParam
in addition to onMethod
; annotations listed will be put on the only parameter that the generated method has.
None of the mentioned annotations above actually have parameters named onMethod
, onParam
, or onConstructor
; nevertheless, if you type them, lombok will make it work. Unfortunately this does mean that auto-complete and other tool-driven convenience features will not work as expected. The annotations lack these parameters in order to work around javac limitations.
We can't think of any small print for this feature, other than to reiterate: This feature can disappear at any time; if you use this feature, be prepared to adjust your code when we find a nicer way of implementing this feature, or, if a future version of javac forces us to remove this feature entirely with no alternative.
The onX
parameter is not legal on any type-wide variant. For example, a @Getter
annotation on a class does not support onMethod
.