0Pricing
Kotlin Academy · Leçon

Paramètres de types reified : accéder à T à l’exécution

Utilisez reified avec des fonctions inline pour effectuer des vérifications et des conversions de types à l’exécution.

Paramètres de types reified : accéder à T à l’exécution est une leçon Kotlin Academy gratuite sur CoddyKit. Ceci est la leçon 3 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.

Le problème de l’effacement des types

Kotlin/JVM efface les informations sur les types génériques lors de l’exécution. Dans une fonction générique fun foo(), vous ne pouvez pas écrire T::class ni is T : après la compilation, le JVM ne sait pas ce qu’est T.

reified à la rescousse

Combinez inline avec reified sur le paramètre de type. Comme la fonction est intégrée, le compilateur remplace le paramètre par le type réel à chaque emplacement d’appel, ce qui rend T entièrement accessible à l’exécution.

inline fun <reified T> isInstance(value: Any): Boolean = value is T

val result = isInstance<String>("hello")  // true

Vérifier le type avec is T

Sans reified, is T provoque une erreur de compilation (« Cannot check for instance of erased type »). Avec ce mot-clé, le compilateur réécrit la vérification en utilisant le type concret fourni sur le site d'appel.

inline fun <reified T> filterByType(list: List<Any>): List<T> =
    list.filterIsInstance<T>()

Obtenir KClass à partir de T

Vous pouvez obtenir la KClass du paramètre de type avec T::class. Cela permet d'effectuer des vérifications de type et de transmettre des références de classe aux API sans réflexion.

inline fun <reified T> className(): String = T::class.simpleName ?: "Unknown"

println(className<Int>())  // "Int"

Analyser avec des types réifiés

Un modèle courant consiste à créer un utilitaire parseJson de type sécurisé qui reçoit automatiquement la classe cible :

inline fun <reified T> parseJson(json: String): T =
    jacksonObjectMapper().readValue(json, T::class.java)

Modèle ViewModel / localisateur de services

Les conteneurs d'injection de dépendances utilisent souvent reified pour retourner l'instance correcte sans vous obliger à transmettre un argument Class :

inline fun <reified T : ViewModel> Fragment.viewModel(): T =
    ViewModelProvider(this)[T::class.java]

Appeler des API Java avec Class<T>

De nombreuses API Java exigent un argument Class. reified vous permet de les appeler sans obliger les appelants à transmettre explicitement la classe :

inline fun <reified T> Gson.fromJson(json: String): T =
    fromJson(json, T::class.java)

Types réifiés et contraintes de type

Vous pouvez combiner reified avec des bornes supérieures :

inline fun <reified T : Any> create(): T =
    T::class.java.getDeclaredConstructor().newInstance()

Limites

Les paramètres de type réifiés fonctionnent uniquement dans les fonctions inline — pas dans les classes, les interfaces ni les fonctions qui ne sont pas inline. Vous ne pouvez pas appeler une fonction reified avec un type inconnu connu uniquement à l'exécution.

Comment le compilateur l'implémente

Sur chaque site d'appel, le compilateur remplace T par l'argument de type réel. Le bytecode du site d'appel contient des références directes à la classe concrète : aucune réflexion n'est nécessaire.

Exemples de la bibliothèque standard

Fonctions de la bibliothèque standard utilisant reified : filterIsInstance(), emptyArray(), arrayOf(), typeOf(). Elles fonctionnent précisément parce qu'elles sont inline + reified.

Vérification rapide

Pourquoi reified exige-t-il que la fonction soit inline ?

Récapitulatif : paramètres de type réifiés

Points essentiels :

  • reified rend un paramètre de type accessible à l'exécution et contourne l'effacement des types
  • La fonction doit être inline
  • Permet d'utiliser is T, T::class et T::class.java dans la fonction
  • Permet l'analyse JSON sécurisée par le type, les utilitaires d'injection de dépendances et les API utilisant des références de classe

Questions Fréquemment Posées

La leçon « Paramètres de types reified : accéder à T à l’exécution » est-elle gratuite ?

Oui — le texte complet de « Paramètres de types reified : accéder à T à l’exécution » 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 « Paramètres de types reified : accéder à T à l’exécution » ?

Utilisez reified avec des fonctions inline pour effectuer des vérifications et des conversions de types à l’exécution. 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 3 sur 4.

Combien de temps prend la leçon « Paramètres de types reified : accéder à T à l’exécution » ?

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

  1. Fonctions inline : éliminer le surcoût des lambdas
  2. Modificateurs noinline et crossinline
  3. Paramètres de types reified : accéder à T à l’exécution
  4. Modèles pratiques avec reified : analyse, DI et sérialisation
← Retour à Kotlin Academy