Name Date Size #Lines LOC

..--

annotations/H25-Apr-2025-8262

processor/H25-Apr-2025-332298

src/H25-Apr-2025-41,63730,686

userguide/H25-Apr-2025-3,3802,631

Android.bpH A D25-Apr-20254 KiB145131

CHANGES.mdH A D25-Apr-202510.5 KiB256181

README.mdH A D25-Apr-20251.5 KiB3326

pom.xmlH A D25-Apr-20258.1 KiB263231

README.md

1# AutoValue
2
3*Generated immutable value classes for Java 7+* <br />
4***Kevin Bourrillion, Éamonn McManus*** <br />
5**Google, Inc.**
6
7**Value classes** are extremely common in Java projects. These are classes for
8which you want to treat any two instances with suitably equal field values as
9interchangeable. That's right: we're talking about those classes where you wind
10up implementing `equals`, `hashCode` and `toString` in a bloated, repetitive,
11formulaic yet error-prone fashion.
12
13Writing these methods the first time is not too bad, with the aid of a few
14helper methods and IDE templates. But once written they continue to burden
15reviewers, editors and future readers. Their wide expanses of boilerplate
16sharply decrease the signal-to-noise ratio of your code... and they love to
17harbor hard-to-spot bugs.
18
19AutoValue provides an easier way to create immutable value classes, with a lot
20less code and less room for error, while **not restricting your freedom** to
21code almost any aspect of your class exactly the way you want it.
22
23For more information, consult the
24[detailed documentation](userguide/index.md).
25
26**Note:** If you are using Kotlin then its
27[data classes](https://kotlinlang.org/docs/data-classes.html) are usually more
28appropriate than AutoValue. Likewise, if you are using a version of Java that
29has [records](https://docs.oracle.com/en/java/javase/16/language/records.html),
30then those are usually more appropriate. You can still use
31[AutoBuilder](userguide/autobuilder.md)
32to make builders for data classes or records.
33