Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Traitement des annotations en Kotlin
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Yves Kalume
February 24, 2023
Programming
38
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Traitement des annotations en Kotlin
Yves Kalume
February 24, 2023
More Decks by Yves Kalume
See All by Yves Kalume
Bringing AI to Android With Gemini
yveskalume
0
9
Dompting the Elephant: Making Sense of Gradle for Android Developers
yveskalume
0
40
Practical AI for Android Developers with Android Studio’s AI Agent
yveskalume
0
28
Designing scalable Compose APIs
yveskalume
1
150
Demystifying Memory Leaks in Android
yveskalume
2
140
L’essentiel de Git et Github en max 20 minutes
yveskalume
1
58
Modern Android Architecture
yveskalume
1
110
GDSC Alumni retour d’experience
yveskalume
0
32
Premier pas avec Jetpack compose
yveskalume
0
26
Other Decks in Programming
See All in Programming
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
120
柔軟なPDFレイアウトエディタを支える型システム設計 — Discriminated UnionとConditional Typeの実践
minako__ph
4
1.6k
AI時代のUIはどこへ行く?その2!
yusukebe
19
6.9k
肥大化するレガシーコードに立ち向かうためのインターフェース分離と依存の逆転 / JJUG CCC 2026 Spring
hirokunimaeta
0
520
「AIで開発し、AIを届ける」をEvalでつなぐ 〜AIネイティブに始めるプロダクト開発の実践〜 / Connecting "Develop with AI, deliver AI" with Eval
rkaga
4
4.8k
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
190
Dataformのリポジトリを立ち上げるときにまずやること / dataform-day0-2026
snhryt
0
130
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.3k
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
150
The ROI of Quarkus for Spring Boot Applications
hollycummins
0
100
運用エージェントは "作る" から "育てる" へ - 記憶と自己進化の3層設計パターン / self-evolving-agents-three-layer-agent-design
gawa
12
3.6k
AIエージェントの隔離技術の徹底比較
kawayu
0
470
Featured
See All Featured
Practical Orchestrator
shlominoach
191
11k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
200
Building an army of robots
kneath
306
46k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
1
2.7k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Site-Speed That Sticks
csswizardry
13
1.2k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6k
sira's awesome portfolio website redesign presentation
elsirapls
0
270
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
Transcript
Traitement des annotations en Kotlin Yves Kalume (@kalumeyves) Développeur Mobile
@Composable fun HomeScreen() @OptIn(ExperimentalPagerApi.:class) @Devscat @SuppressWarnings("deprecation") @Deprecated @Configuration @Autowired Annotation
Processing
Une annotation permet au programmeur d'intégrer des informations supplémentaires dans
un code source.
Déclaration d’une annotation annotation class Devscast @Target(AnnotationTarget.CLASS) @Retention(AnnotationRetention.SOURCE)
Utilisation d’une annotation @Devscast class Foo(val id: Int, val name:
String) fun main() { val annotations = Foo.:class.annotations print(annotations) ./ [] une liste vide... pourquoi ? }
Kotlin Symbol Processing (KSP)
KSP en action dependencies { implementation("com.google.devtools.ksp:symbol-processing-api:1.8.10-1.0.9") }
src/main/resources/META-INF/services/
Fournisseur de processeur class DevscastProcessorProvider : SymbolProcessorProvider { override fun
create( environment: SymbolProcessorEnvironment ): SymbolProcessor { return DevscastProcessor(environment) } }
Processeur class ListedProcessor( private val environment: SymbolProcessorEnvironment ) : SymbolProcessor
{ override fun process(resolver: Resolver): List<KSAnnotated>{ ./ traitement } }
val result = resolver.getSymbolsWithAnnotation( Devscast.:class.qualifiedName.toString() ) ./ ... return result.filterNot
{ it.validate() }.toList()
Prêt à être utilisée
dependencies { implementation(project(":lib") ) ksp(project(":lib")) } android { kotlin {
sourceSets.debug { kotlin.srcDirs += 'build/generated/ksp/debug/kotlin' } sourceSets.release { kotlin.srcDirs += 'build/generated/ksp/release/kotlin' } } }
Merci ! Yves Kalume - @kalumeyves Développeur Mobile