xref: /aosp_15_r20/external/auto/value/userguide/why.md (revision 1c2bbba85eccddce6de79cbbf1645fda32e723f0)
1*1c2bbba8SAndroid Build Coastguard Worker# Why use AutoValue?
2*1c2bbba8SAndroid Build Coastguard Worker
3*1c2bbba8SAndroid Build Coastguard Worker
4*1c2bbba8SAndroid Build Coastguard WorkerIn versions of Java preceding
5*1c2bbba8SAndroid Build Coastguard Worker[records](https://docs.oracle.com/en/java/javase/16/language/records.html),
6*1c2bbba8SAndroid Build Coastguard WorkerAutoValue is the only solution to the value class problem having all of the
7*1c2bbba8SAndroid Build Coastguard Workerfollowing characteristics:
8*1c2bbba8SAndroid Build Coastguard Worker
9*1c2bbba8SAndroid Build Coastguard Worker*   **API-invisible** (callers cannot become dependent on your choice to use it)
10*1c2bbba8SAndroid Build Coastguard Worker*   No runtime dependencies
11*1c2bbba8SAndroid Build Coastguard Worker*   Negligible cost to performance
12*1c2bbba8SAndroid Build Coastguard Worker*   Very few limitations on what your class can do
13*1c2bbba8SAndroid Build Coastguard Worker*   Extralinguistic "magic" kept to an absolute minimum (uses only standard Java
14*1c2bbba8SAndroid Build Coastguard Worker    platform technologies, in the manner they were intended)
15*1c2bbba8SAndroid Build Coastguard Worker
16*1c2bbba8SAndroid Build Coastguard WorkerThis
17*1c2bbba8SAndroid Build Coastguard Worker[slide presentation] compares AutoValue to numerous alternatives and explains
18*1c2bbba8SAndroid Build Coastguard Workerwhy we think it is better.
19*1c2bbba8SAndroid Build Coastguard Worker
20*1c2bbba8SAndroid Build Coastguard Worker[slide presentation]: https://docs.google.com/presentation/d/14u_h-lMn7f1rXE1nDiLX0azS3IkgjGl5uxp5jGJ75RE/edit
21