Равиль Губайдуллин - annotation processing

Post on 26-Jan-2017

69 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Annotation processing

Равиль Губайдуллин

Digital Zone

ravilgy@gmail.com

e-LegionGDG Kazan

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

Java poet

https://github.com/square/javapoet

Example

Структура проекта

api (java-module)

app

processor (java-module)

settings-core (android-module)

Спасибо за внимание !

top related