Instancier un objet de classe avec un constructeur qui accepte un paramètre de chaîne?
Je tiens à instancier un objet à partir de sa Class
objet, en utilisant le constructeur qui accepte un seul String
argument.
Voici un code qui s'approche de ce que je veux:
Object object = null;
Class classDefinition = Class.forName("javax.swing.JLabel");
object = classDefinition.newInstance();
Cependant, il instancie la JLabel
objet sans texte. Je voudrais utiliser le JLabel
constructeur qui accepte une chaîne de caractères que le texte initial. Est-il un moyen de sélectionner un constructeur à partir d'un Class
objet?
Vous devez vous connecter pour publier un commentaire.
Class.newInstance
invoque le non-arg constructeur (celui qui ne prend aucun paramètre). Pour invoquer un constructeur différent, vous devez utiliser la réflexion paquet (java.lang.reflect
).Obtenir un
Constructor
exemple comme ceci:L'appel à
getConstructor
indique que vous souhaitez que le constructeur qui prend un seulString
paramètre. Maintenant, pour créer une instance:Et vous avez terminé.
P. S. utiliser la réflexion comme un dernier recours!
La suite va travailler pour vous.
Essayez ceci,
Class.forName("className").newInstance()
toujours invoque aucun argument constructeur par défaut.D'invoquer paramétrées constructeur au lieu de zéro argument pas d'argument-constructeur,
Constructor
avec des types de paramètres par la transmission de types dansClass[]
pour
getDeclaredConstructor
méthode deClass
Object[]
pournewInstance
méthode deConstructor
Exemple de code:
de sortie:
À certains moments, il n'est pas nécessaire de créer un objet de la classe à l'appel des constructeurs et des méthodes. Vous pouvez appeler les méthodes de la classe sans créer d'objet direct. Il est très facile d'appeler un constructeur avec paramètre.
la sortie sera:
Bonjour, je suis un constructeur. Bienvenue, L'Utilisateur
Bonjour.
de la Classe.forName("RunDemo"); pour charger le RunDemo Classe.
Constructeur c=RunDemo.classe.getConstructor(String.class); getConstructor() la méthode Constructeur de la classe sera de retour le constructeur qui, ayant Chaîne comme Argument et sa référence est stockée dans l'objet " c " du Constructeur de la classe.
RunDemo d=(RunDemo)c.newInstance("Utilisateur"); la méthode newInstance() du Constructeur de la classe instancier l'RundDemo classe et le retour de la version Générique de l'objet et il est converti en RunDemo type en utilisant la conversion de Type.
L'objet " d " de RunDemo détient la référence renvoyée par la méthode newInstance ().