auto (google/auto)
Searching Database…
Что это такое?
Auto — это набор генераторов исходного кода для Java, которые автоматически создают механический, повторяющийся шаблонный код, который разработчики иначе писали бы вручную.
Это одна библиотека или набор отдельных инструментов?
Это зонтичный набор, объединяющий четыре разных подпроекта-обработчика аннотаций: AutoFactory, AutoService, AutoValue и Common, каждый из которых решает свою задачу генерации кода.
Как начать пользоваться одним из этих генераторов?
Вы добавляете нужный подпроект (AutoFactory, AutoService или AutoValue) как зависимость в сборку Java и помечаете свои классы аннотациями; затем обработчик аннотаций генерирует вспомогательный код во время компиляции.
Нужна ли для них определённая версия Java?
AutoValue требует Java 8 или новее; остальные подпроекты работают со стандартной обработкой аннотаций Java во время компиляции, никакая дополнительная среда выполнения не нужна.
Нужно ли мне выбирать подходящий подпроект для своей задачи?
Да, единого генератора «на все случаи» нет: AutoFactory, AutoService, AutoValue и Common каждый решает свою конкретную задачу, поэтому выбирайте тот, который подходит под то, что вы создаёте.
Что именно генерирует AutoValue?
AutoValue генерирует шаблонный код для неизменяемых классов-значений в Java 8+, например конструкторы, equals, hashCode и toString, по простому абстрактному классу, который вы пишете.
Для чего нужен AutoFactory?
AutoFactory генерирует фабричные классы, совместимые с JSR-330, избавляя от необходимости вручную писать шаблонный код фабрик для объектов с внедрением зависимостей.
Какую проблему решает AutoService?
AutoService генерирует файлы конфигурации провайдеров, которые нужны механизму ServiceLoader в Java, так что вам не придётся поддерживать их вручную.
Зачем Google создал это, вместо того чтобы писать код вручную?
Повторяющийся шаблонный код на Java механический, часто не покрыт тестами и нередко становится источником неочевидных ошибок, поэтому генераторы Auto создают этот код автоматически и корректно.
What are similar projects?
lombok, butterknife, gson, javapoet, grumpy, closure-compiler, wire, hutool
Which topics is it in?
java-library, codegen, software-engineering, coding, jvm, design-patterns, boilerplate, code-generation, google, compiler, programming, utility