Maison >Java >javaDidacticiel >Comment puis-je instancier des classes Java en utilisant uniquement leurs noms de chaîne ?

Comment puis-je instancier des classes Java en utilisant uniquement leurs noms de chaîne ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-11 19:08:20237parcourir

How Can I Instantiate Java Classes Using Only Their String Names?

Instancier des classes par nom en Java

Java propose deux méthodes pour instancier des classes en passant leur nom de chaîne :

1. Utiliser Reflection avec un constructeur sans argument

Si la classe cible a un constructeur sans argument, vous pouvez utiliser la méthode Class.forName() pour obtenir l'objet Class. Par la suite, appelez la méthode newInstance() pour créer une instance :

Class<?> clazz = Class.forName("java.util.Date");
Object date = clazz.newInstance();

2. Utilisation de Reflection pour les classes avec ou sans constructeurs sans argument

Pour une approche plus complète qui fonctionne pour les classes avec ou sans constructeurs sans argument, suivez ces étapes :

  1. Récupérez l'objet Class à l'aide de Class.forName().
  2. Obtenez l'objet constructeur à l'aide de la méthode getConstructor(), en spécifiant les types de paramètres si nécessaire.
  3. Instancier la classe en appelant newInstance() sur l'objet constructeur, en passant les paramètres requis.
Class<?> clazz = Class.forName("com.foo.MyClass");
Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class);
Object instance = constructor.newInstance("stringparam", 42);

Remarque : Les deux approches impliquent une réflexion , qui doit être utilisé judicieusement car il peut contourner les contraintes de gestion des exceptions et de sécurité de 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