diff --git a/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleBuilder.java b/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleBuilder.java index 46bbf140..abc4d56b 100644 --- a/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleBuilder.java +++ b/core/src/main/java/org/javahelpers/simple/builders/core/annotations/SimpleBuilder.java @@ -33,10 +33,21 @@ import org.javahelpers.simple.builders.core.enums.OptionState; /** - * Annotation to mark classes for builder generation. + * Annotation to mark classes and records for builder generation. * - *

Triggers generation of a fluent builder class with support for various patterns and helper - * methods. Can be used standalone or combined with {@link Options} for fine-grained control. + *

Place this annotation directly on a class or record to trigger generation of a fluent builder + * class with support for various patterns and helper methods. Can be used standalone or combined + * with {@link Options} for fine-grained control. + * + *

When to use {@code @SimpleBuilder} vs {@link Template}: + * + *

* *

Available configuration options: * @@ -54,6 +65,14 @@ * *

Use {@link Template} to create reusable configuration presets. * + *

This annotation is {@link Inherited}: a subclass of an annotated type is treated as if it also + * carried {@code @SimpleBuilder} for the purpose of triggering builder generation, unless it is + * explicitly excluded via {@link Ignore4BuilderGeneration}. The {@link Template} meta-annotation is + * {@link Inherited} as well, so custom template annotations that are themselves {@code @Inherited} + * propagate to subclasses in the same way. Note that configuration options declared on the parent's + * {@code @SimpleBuilder(options = ...)} or template are not yet applied to inherited subclass + * builders; subclasses currently use default options (see issue #248). + * *

Related annotations: * *