Maison > Java > javaDidacticiel > Comment déterminer la classe d'un type générique dans les classes génériques ?

Comment déterminer la classe d'un type générique dans les classes génériques ?

Barbara Streisand
Libérer: 2024-11-11 12:43:02
original
851 Les gens l'ont consulté

How to Determine the Class of a Generic Type in Generic Classes?

Détermination de classe de type générique dans les classes génériques

En programmation orientée objet, déterminer la classe d'un type générique est souvent nécessaire. Cependant, lors de l'utilisation de classes génériques, cette tâche devient difficile en raison de l'effacement du type au moment de l'exécution.

Considérez l'exemple suivant dans lequel MyGenericClass tente de créer une instance de type T à l'aide d'une bibliothèque tierce :

public class MyGenericClass<T> {
  public void doSomething() {
    // Create an instance of class T
    T bean = (T)someObject.create(T.class);
  }
}
Copier après la connexion

Cette approche échoue avec une erreur « Littéral de classe illégal pour le paramètre de type T ». Pour résoudre ce problème, une solution de contournement courante consiste à transmettre le type T en tant que paramètre à une méthode statique :

public class MyGenericClass<T> {

    private final Class<T> clazz;

    public static <U> MyGenericClass<U> createMyGeneric(Class<U> clazz) {
        return new MyGenericClass<U>(clazz);
    }

    protected MyGenericClass(Class<T> clazz) {
        this.clazz = clazz;
    }

    public void doSomething() {
        // Create an instance of class T
        T instance = clazz.newInstance();
    }
}
Copier après la connexion

En passant explicitement la classe T, le code peut créer avec succès une instance du type souhaité. Bien que cette méthode ne soit pas aussi élégante qu'un appel de méthode direct, elle fournit une solution fiable pour déterminer la classe d'un type générique.

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