SlideShare a Scribd company logo
Annotation processing
Равиль Губайдуллин
Digital Zone
ravilgy@gmail.com
e-Legion
GDG Kazan
https://vk.com/gdgkazan
Метапрограммирование
Метапрограммирование — вид программирования, связанный с созданием программ, которые
порождают другие программы как результат своей работы (в частности, на стадии компиляции их
исходного кода), либо программ, которые меняют себя во время выполнения. © Wikipedia
метапрограммирования
Равиль Губайдуллин - Annotation processing
findViewBy
setOnClickListener
Реализация интерфейса Parceable
Работа с sharedPreference
И т. д.
Библиотеки
Butterknife
Dagger 2
Parceler
И т.д.
Аннотации
Аннотации
Java-аннотация — в языке Java специальная форма синтаксических метаданных, которая может
быть добавлена в исходный код.
Аннотации используются для анализа кода, компиляции или выполнения. Аннотируемы пакеты,
классы, методы, переменные и параметры.
Выглядит как @ИмяАннотации, предваряющее определение переменной, параметра, метода,
класса, пакета. © Wikipedia
Применение
Дает необходимую информацию для компилятора
Для обработки во время компиляции (compile - time)
Для обработки во время выполнения (runtime)
Создание и использование
● Создание
public @interface MyAnnotation {}
Использование
@MyAnnotation
public 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
https://github.com/RavilGubaydullin/Setti
ngsAnnotation
Структура проекта
api (java-module)
app
processor (java-module)
settings-core (android-module)
Спасибо за внимание !

More Related Content

PPTX
Lektsia 5
PPTX
PPTX
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
PDF
C++ осень 2012 лекция 6
PDF
Frontend: Путешествие в мир модульных загрузчиков
PDF
C++ осень 2013 лекция 8
ODP
Java: вчера, сегодня, завтра
PDF
C++ STL & Qt. Занятие 09.
Lektsia 5
Курс Java-2016. Занятие 02. Пакеты, сборка проекта с Maven
C++ осень 2012 лекция 6
Frontend: Путешествие в мир модульных загрузчиков
C++ осень 2013 лекция 8
Java: вчера, сегодня, завтра
C++ STL & Qt. Занятие 09.

What's hot (20)

PDF
C++ осень 2013 лекция 7
PDF
PDF
C++ осень 2013 лекция 3
PDF
C++ осень 2013 лекция 5
PDF
лек11 4
PDF
REPL в Node.js: улучшаем быт разработчик
PPTX
PPTX
введение в Javascript
PPTX
Увеличиваем мощь фреймворка Kdt & code`s generator
PDF
Continuous integration
PDF
Теория языков программирования некоторые слайды к лекциям
PPTX
C language lect_14_basics
PPS
Vba программы
PDF
Ruby on Rails. Работа с моделями
PDF
Отладка и оптимизация многопоточных OpenMP-программ
PPT
PureMVC в картинках - часть 1
PPTX
PDF
Ігор Карпиленко — PHPStorm for drupal developer
PDF
Relational databases versioning
PDF
PostSharp - Threading Model
C++ осень 2013 лекция 7
C++ осень 2013 лекция 3
C++ осень 2013 лекция 5
лек11 4
REPL в Node.js: улучшаем быт разработчик
введение в Javascript
Увеличиваем мощь фреймворка Kdt & code`s generator
Continuous integration
Теория языков программирования некоторые слайды к лекциям
C language lect_14_basics
Vba программы
Ruby on Rails. Работа с моделями
Отладка и оптимизация многопоточных OpenMP-программ
PureMVC в картинках - часть 1
Ігор Карпиленко — PHPStorm for drupal developer
Relational databases versioning
PostSharp - Threading Model
Ad

More from Provectus (20)

PPTX
Choosing the right IDP Solution
PPTX
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
PPTX
Choosing the Right Document Processing Solution for Healthcare Organizations
PPTX
MLOps and Data Quality: Deploying Reliable ML Models in Production
PPTX
AI Stack on AWS: Amazon SageMaker and Beyond
PPTX
Feature Store as a Data Foundation for Machine Learning
PPTX
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
PPTX
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
PPTX
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
PDF
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
PDF
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
PDF
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
PDF
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
PDF
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
PDF
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
PDF
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
PDF
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
PDF
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
PDF
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
PPTX
How to implement authorization in your backend with AWS IAM
Choosing the right IDP Solution
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Choosing the Right Document Processing Solution for Healthcare Organizations
MLOps and Data Quality: Deploying Reliable ML Models in Production
AI Stack on AWS: Amazon SageMaker and Beyond
Feature Store as a Data Foundation for Machine Learning
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
How to implement authorization in your backend with AWS IAM
Ad

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