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
Yves Kalume
February 24, 2023
Programming
1
27
Traitement des annotations en Kotlin
Yves Kalume
February 24, 2023
Tweet
Share
More Decks by Yves Kalume
See All by Yves Kalume
Designing scalable Compose APIs
yveskalume
1
120
Demystifying Memory Leaks in Android
yveskalume
2
120
L’essentiel de Git et Github en max 20 minutes
yveskalume
1
43
Modern Android Architecture
yveskalume
1
92
GDSC Alumni retour d’experience
yveskalume
0
25
Premier pas avec Jetpack compose
yveskalume
0
16
Flutter et Firebase
yveskalume
0
17
La modularisation dans le développement Android
yveskalume
0
15
Other Decks in Programming
See All in Programming
スマホから Youtube Shortsを見られないようにする
lemolatoon
27
34k
Range on Rails ―「多重範囲型」という新たな選択肢が、複雑ロジックを劇的にシンプルにしたワケ
rizap_tech
0
6.7k
Go言語はstack overflowの夢を見るか?
logica0419
0
520
ソフトウェア設計の実践的な考え方
masuda220
PRO
4
640
技術的負債の正体を知って向き合う
irof
0
230
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
12
7.1k
理論と実務のギャップを超える
eycjur
0
180
What's new in Spring Modulith?
olivergierke
1
170
Android16 Migration Stories ~Building a Pattern for Android OS upgrades~
reoandroider
0
130
bootcamp2025_バックエンド研修_WebAPIサーバ作成.pdf
geniee_inc
0
120
20251016_Rails News ~Rails 8.1の足音を聴く~
morimorihoge
3
700
React Nativeならぬ"Vue Native"が実現するかも?_新世代マルチプラットフォーム開発フレームワークのLynxとLynxのVue.js対応を追ってみよう_Vue Lynx
yut0naga1_fa
2
470
Featured
See All Featured
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
BBQ
matthewcrist
89
9.8k
YesSQL, Process and Tooling at Scale
rocio
173
15k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
How GitHub (no longer) Works
holman
315
140k
Building a Modern Day E-commerce SEO Strategy
aleyda
44
7.8k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Product Roadmaps are Hard
iamctodd
PRO
55
11k
Bash Introduction
62gerente
615
210k
Building Applications with DynamoDB
mza
96
6.7k
KATA
mclloyd
PRO
32
15k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
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