Download - Равиль Губайдуллин - Annotation processing
Annotation processing
https://vk.com/gdgkazan
Метапрограммирование
Метапрограммирование — вид программирования, связанный с созданием программ, которые порождают другие программы как результат своей работы (в частности, на стадии компиляции их исходного кода), либо программ, которые меняют себя во время выполнения. © Wikipedia метапрограммирования
findViewBy
setOnClickListener
Реализация интерфейса Parceable
Работа с sharedPreference
И т. д.
Библиотеки
Butterknife
Dagger 2
Parceler
И т.д.
Аннотации
Аннотации
Java-аннотация — в языке Java специальная форма синтаксических метаданных, которая может
быть добавлена в исходный код.
Аннотации используются для анализа кода, компиляции или выполнения. Аннотируемы пакеты,
классы, методы, переменные и параметры.
Выглядит как @ИмяАннотации, предваряющее определение переменной, параметра, метода,
класса, пакета. © Wikipedia
Применение
Дает необходимую информацию для компилятора
Для обработки во время компиляции (compile - time)
Для обработки во время выполнения (runtime)
Создание и использование
● Создание
public @interface MyAnnotation {}
Использование
@MyAnnotationpublic class MyClass {}
Аргументы
public @interface MyAnnotation {String arg1();int arg2() default 1;
}
@MyAnnotation(arg1=”value”)public class MyClass {}
@Retention
RetentionPolicy.SOURCE
RetentionPolicy.CLASS
RetentionPolicy.RUNTIME
@Target
ElementType.ANNOTATION_TYPE
ElementType.CONSTRUCTOR
ElementType.FIELD
ElementType.LOCAL_VARIABLE
ElementType.METHOD
Annotation Processor
Annotation processor
Code generation
Example
https://github.com/RavilGubaydullin/SettingsAnnotation
Структура проекта
api (java-module)
app
processor (java-module)
settings-core (android-module)
Спасибо за внимание !