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
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!