Maison  >  Article  >  Java  >  Comment puis-je instancier des objets de types génériques en Java ?

Comment puis-je instancier des objets de types génériques en Java ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-13 00:26:02857parcourir

How Can I Instantiate Objects of Generic Types in Java?

Instanciation des génériques : dévoiler le secret

Dans le domaine de la programmation Java, les génériques offrent une immense flexibilité en permettant la déclaration de classes et de méthodes qui peut fonctionner sur différents types de données sans avoir besoin de conversions de type explicites. Cependant, instancier des objets de types génériques pose un défi qui peut paraître trivial à première vue, mais nous allons approfondir une solution qui prouve le contraire.

Considérez la déclaration de classe :

public class Abc<T> {
    public T getInstanceOfT() {
        // Here's where we aim to create an instance of T and return it.
    }
}

Pour instancier un objet de type T dans la méthode getInstanceOfT, nous devons surmonter le manque d'informations sur le paramètre de type réel au moment de la compilation. Le bytecode Java ne conserve pas ces informations, les rendant inaccessibles sans disposition explicite.

La solution réside dans l'adoption des capacités dynamiques de Java. Nous pouvons modifier la méthode pour accepter la classe de type réelle comme argument :

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

En passant la classe de type réelle, illustrée dans Class au sein de la méthode, nous pouvons instancier dynamiquement un objet de ce type. Notez la nécessité de gérer les exceptions lors de l'utilisation de la méthode newInstance.

N'oubliez pas que l'instanciation de types génériques nécessite la fourniture explicite du type réel au moment de l'exécution car il reste inconnu au moment de la compilation. Relever ce défi dévoile la véritable nature des génériques et témoigne de la puissance et de la finesse de la programmation Java.

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