Maison >Java >javaDidacticiel >Comment instancier un type générique en Java avec un paramètre de classe ?

Comment instancier un type générique en Java avec un paramètre de classe ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-24 08:43:12574parcourir

How to Instantiate a Generic Type in Java with a Class Parameter?

Instanciation de types génériques en Java avec paramètre de classe

Les génériques en Java offrent un moyen pratique de définir des classes et des méthodes qui fonctionnent sur une variété de types de données. Cependant, instancier un objet d'un type générique peut être un peu délicat.

Supposons que vous ayez une déclaration de classe comme celle-ci :

public class Abc<T> {
    public T getInstanceOfT() {
        // I want to create an instance of T and return the same.
    }
}

Comment pouvez-vous créer un objet de type T dans le Méthode getInstanceOfT ?

Solution :

La clé de l'instanciation un type générique consiste à transmettre le type réel comme argument à la classe générique. Cela peut être fait en utilisant la classe paramètre de type :

public class Abc<T> {
    public T getInstanceOfT(Class<T> aClass) {
        return aClass.newInstance();
    }
}

Dans ce code modifié, la méthode getInstanceOfT accepte un argument de type Class, qui représente le type réel de l'objet à créer. La méthode newInstance() sur l'objet Class crée ensuite une instance de ce type et la renvoie.

Gestion des exceptions :

Il est important de noter que vous aurez besoin pour ajouter la gestion des exceptions à votre code, car newInstance() peut lancer une InstantiationException ou IllegalAccessException.

Runtime Type :

Passer le type réel comme argument est nécessaire car le type de T n'est pas connu au moment de la compilation. Après la compilation, le code d'octet ne contient aucune information sur le type réel, il doit donc être fourni explicitement 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!

Déclaration:
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