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