Maison > Java > javaDidacticiel > le corps du texte

Comment déterminer la classe d'un type générique en Java au moment de l'exécution ?

Susan Sarandon
Libérer: 2024-11-12 07:39:02
original
726 Les gens l'ont consulté

How to Determine the Class of a Generic Type in Java at Runtime?

Détermination de la classe d'un type générique en Java

En Java, lorsqu'il s'agit de classes génériques, il est souvent nécessaire de déterminer le type spécifique qu'un type générique contient exécution. Cependant, les informations de type générique sont effacées lors de la compilation, ce qui rend difficile l'accès direct à celles-ci.

Prenons un exemple :

public class MyGenericClass<T> {

  public void doSomething() {
    T instance = (T) thirdPartyLib.create(T.class);
  }
}
Copier après la connexion

Dans ce scénario, T.class entraînera un Erreur littérale de classe illégale car le type générique T est inconnu. Pour résoudre ce problème, une solution de contournement est nécessaire.

Solution de contournement

Une solution de contournement efficace consiste à transmettre le type en tant que paramètre à une méthode statique, qui fournira les informations de classe à la classe générique. Voici un exemple :

public class MyGenericClass<T> {

  private final Class<T> type;

  public static <U> MyGenericClass<U> createWithClass(Class<U> type) {
    return new MyGenericClass<>(type);
  }

  private MyGenericClass(Class<T> type) {
    this.type = type;
  }

  public void doSomething() {
    T instance = type.newInstance();
  }
}
Copier après la connexion

Cette méthode vous permet de transmettre explicitement le type de classe, garantissant que la classe générique a accès aux informations nécessaires. Bien que cette solution de contournement ne soit peut-être pas la solution la plus élégante, elle constitue un moyen fiable de déterminer la classe d'un type générique au moment de l'exécution.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal