Modèles pratiques avec reified : analyse, DI et sérialisation
Appliquez les génériques reified à l’analyse JSON, à la résolution des dépendances et aux utilitaires de réflexion.
Modèles pratiques avec reified : analyse, DI et sérialisation est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Kotlin Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Kotlin Academy comprend 4 leçons au total.
Les trois principaux cas d'utilisation
Les paramètres de type réifiés sont particulièrement utiles dans trois modèles Kotlin récurrents : l'analyse JSON et des données, l'injection de dépendances et les utilitaires de sérialisation. Chacun élimine les arguments ::class.java répétitifs.
Modèle 1 — Analyse JSON sécurisée par le type
Encapsulez Gson ou Jackson dans une extension réifiée afin que les appelants n'aient jamais à transmettre explicitement une Class :
inline fun <reified T> String.parseJson(): T =
Gson().fromJson(this, T::class.java)
val user: User = jsonString.parseJson()Analyser des collections
L'analyse d'une liste générique nécessite un TypeToken. Avec reified, vous pouvez masquer cette complexité :
inline fun <reified T> String.parseList(): List<T> {
val type = object : TypeToken<List<T>>() {}.type
return Gson().fromJson(this, type)
}
val users: List<User> = jsonString.parseList()Approche avec kotlinx.serialization
kotlinx.serialization utilise déjà reified en interne. La fonction de niveau supérieur decodeFromString s'appuie sur serializer, qui est une fonction reified inline.
val user = Json.decodeFromString<User>(jsonString)
// equivalent to: Json.decodeFromString(serializer<User>(), jsonString)Modèle 2 — localisateur de services / DI
Un localisateur de services simple peut résoudre les dépendances par type sans que les appelants transmettent une KClass :
object ServiceLocator {
val registry = mutableMapOf<KClass<*>, Any>()
inline fun <reified T : Any> get(): T =
registry[T::class] as? T ?: error("No binding for ${T::class}")
inline fun <reified T : Any> bind(instance: T) {
registry[T::class] = instance
}
}Récupérer un ViewModel dans Android
Le modèle réifié le plus courant dans Android :
inline fun <reified VM : ViewModel> ComponentActivity.viewModel(): VM =
ViewModelProvider(this)[VM::class.java]
// Usage
val vm: MyViewModel by lazy { viewModel() }Modèle 3 — utilitaire de conversion sûre
Un utilitaire de conversion réifié avec une solution de repli est plus propre que l'utilisation explicite de as? partout :
inline fun <reified T> Any?.safeCast(): T? = this as? T
val name: String? = someAny.safeCast<String>()Vérifier le type des collections
Le filtre de collection standard réifié filterIsInstance est la référence en la matière. Vous pouvez créer des variantes de niveau supérieur à partir de celui-ci :
inline fun <reified T> List<Any>.onlyInstancesOf(block: (T) -> Unit) =
filterIsInstance<T>().forEach(block)
items.onlyInstancesOf<Button> { it.setEnabled(true) }Enregistrer des écouteurs d'événements par type
Un bus d'événements qui distribue les événements par type devient pratique avec reified :
class EventBus {
val handlers = mutableMapOf<KClass<*>, (Any) -> Unit>()
inline fun <reified E : Any> on(noinline handler: (E) -> Unit) {
handlers[E::class] = { handler(it as E) }
}
fun post(event: Any) = handlers[event::class]?.invoke(event)
}Combiner reified et les fonctions d'extension
Les fonctions d'extension réifiées sur des récepteurs génériques donnent aux API une utilisation fluide tout en conservant la sûreté des types :
inline fun <reified T : Any> SharedPreferences.get(key: String, default: T): T = when (T::class) {
Int::class -> getInt(key, default as Int) as T
String::class -> getString(key, default as String) as T
Boolean::class -> getBoolean(key, default as Boolean) as T
else -> error("Unsupported type ${T::class}")
}Limites à garder à l'esprit
N'oubliez pas : reified fonctionne uniquement dans les fonctions inline. Les classes et les interfaces ne peuvent pas avoir de paramètres de type réifiés. Si vous avez besoin d'informations de type à l'exécution dans une classe, stockez plutôt une propriété KClass.
Tester les utilitaires réifiés
Les fonctions réifiées sont faciles à tester : appelez-les avec des arguments de type concrets dans des tests unitaires, puis vérifiez le type et la valeur du résultat. Il n'est pas nécessaire de simuler les références de classe.
val result: List<String> = """["a","b","c"]""".parseList<String>()
assertEquals(listOf("a","b","c"), result)Vérification rapide
Quelle affirmation sur les fonctions réifiées est correcte ?
Récapitulatif : modèles réifiés pratiques
Modèles essentiels :
- Analyse JSON : masquez les arguments Class/TypeToken
- DI/localisateur de services : résolvez par type sans paramètres KClass
- Conversions sûres et filtrage des collections
- Distribution par type d'événement avec un bus d'événements
- SharedPreferences / magasins clé-valeur typés
Apprends Kotlin avec un tuteur IA — gratuit
Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.
- Cours
- 51
- Leçons
- 203
Questions Fréquemment Posées
La leçon « Modèles pratiques avec reified : analyse, DI et sérialisation » est-elle gratuite ?
Oui — le texte complet de « Modèles pratiques avec reified : analyse, DI et sérialisation » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Kotlin Academy, passe à CoddyKit PRO. Le cours Kotlin Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Modèles pratiques avec reified : analyse, DI et sérialisation » ?
Appliquez les génériques reified à l’analyse JSON, à la résolution des dépendances et aux utilitaires de réflexion. Tu pratiques Kotlin Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Kotlin Academy ?
Aucune expérience préalable n'est requise. Kotlin Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.
Combien de temps prend la leçon « Modèles pratiques avec reified : analyse, DI et sérialisation » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Kotlin Academy ?
Oui. Chaque leçon Kotlin Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Fonctions inline : éliminer le surcoût des lambdas
- Modificateurs noinline et crossinline
- Paramètres de types reified : accéder à T à l’exécution
- Modèles pratiques avec reified : analyse, DI et sérialisation