1.6 KiB
Extensions
AutoValue can be extended to implement new features for classes annotated with
@AutoValue
.
Using extensions
Each extension is a class. If that class is on the processorpath
when you
compile your @AutoValue
class, the extension can run.
Some extensions are triggered by their own annotations, which you add to your class; others may be triggered in other ways. Consult the extension's documentation for usage instructions.
Writing an extension
To add a feature, write a class that extends AutoValueExtension
, and put
that class on the processorpath
along with AutoValueProcessor
.
AutoValueExtension
uses the ServiceLoader
mechanism, which means:
- Your class must be public and have a public no-argument constructor.
- Its fully-qualified name must appear in a file called
META-INF/services/com.google.auto.value.extension.AutoValueExtension
in a JAR that is on the compiler'sclasspath
orprocessorpath
.
You can use AutoService to make implementing the ServiceLoader
pattern easy.
Without extensions, AutoValue generates a subclass of the @AutoValue
class.
Extensions can work by generating a chain of subclasses, each of which alters
behavior by overriding or implementing new methods.
TODO
- How to distribute extensions.
- List of known extensions.