Maison > Java > javaDidacticiel > Java peut-il instancier des classes en utilisant uniquement leurs noms ?

Java peut-il instancier des classes en utilisant uniquement leurs noms ?

Patricia Arquette
Libérer: 2024-12-02 12:35:22
original
712 Les gens l'ont consulté

Can Java Instantiate Classes Using Only Their Names?

L'instanciation de classe par nom est-elle possible en Java ?

Lorsqu'il s'agit d'instanciation de classe, des circonstances peuvent survenir où le nom de classe est connu uniquement sous le nom une chaîne. Pour résoudre ce problème, Java propose deux approches pour accomplir cette tâche.

Méthode 1 : Instancier avec un constructeur sans argument

Pour les classes avec un constructeur sans argument, Java permet la création d'objets à l'aide de la méthode Class.forName() pour récupérer l'objet de classe et de la méthode newInstance() pour créer un exemple.

Class<?> clazz = Class.forName("java.util.Date");
Object date = clazz.newInstance();
Copier après la connexion

Méthode 2 : Gestion des classes avec ou sans constructeur sans argument

Une approche plus complète qui couvre tous les scénarios, y compris les classes sans argument constructeurs, implique d'interroger l'objet de classe pour son constructeur et d'invoquer newInstance() dessus.

Class<?> clazz = Class.forName("com.foo.MyClass");
Constructor<?> constructor = clazz.getConstructor(String.class, Integer.class);
Object instance = constructor.newInstance("stringparam", 42);
Copier après la connexion

Les deux méthodes utiliser les capacités de réflexion de Java. Cependant, il est crucial de gérer les exceptions qui peuvent survenir au cours de ce processus, telles que :

  • Classe introuvable ou ne peut pas être chargée
  • Manque de constructeurs appropriés
  • Constructeur lancer des exceptions
  • Constructeurs non publics
  • Gestionnaire de sécurité empêchant réflexion

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