Je souhaite créer un objet Je connais uniquement son chemin de classe Toute aide sera appréciée.comment utiliser le package de réflexion pour créer un objet à partir d'un chemin de classe
Répondre
Si vous avez le nom de classe qualifié complet dans un String
, utilisez Class#forName()
et Class#newInstance()
.
Object o = Class.forName("com.example.Foo").newInstance();
Ceci nécessite cependant que la classe soit déjà présente dans le chemin de classe et ait un constructeur par défaut (implicite).
Si ce n'est pas, et vous avez l'emplacement de classe dans un URL
, puis utilisez URLClassLoader
et passer à une autre méthode Class#forName()
qu'il accepte comme argument.
URL url = getItSomehow();
URLClassLoader classLoader = URLClassLoader.newInstance(new URL[] { url });
Object o = Class.forName("com.example.Foo", true, classLoader).newInstance();
Ou, si vous l'avez dans un File
à la place, puis le convertir en URL
premier: « Je ne connais que son classpath »
File file = getItSomehow();
URL url = file.toURI().toURL();
// Continue with URLClassLoader.
OK, mais si je veux appeler n'importe quelle méthode appartient à la classe, que je connais son chemin ou nom qualifié –
C'est une question différente, donc voici juste un lien tutoriel au lieu d'une réponse: http://download.oracle. com/javase/tutorial/reflect/member/methodInvocation.html Si vous êtes bloqué, appuyez sur le bouton 'Ask Question' en haut à droite. N'oubliez pas d'inclure des détails sur l'étape particulière avec laquelle vous êtes bloqués, de préférence avec un petit extrait de code qui reproduit exactement votre problème. Soyez prudent avec le choix et l'utilisation des bons termes. Le terme "classpath" n'était apparemment pas ce que vous pensiez que c'était :) – BalusC
OK, mais je tiens à préciser que dans mon projet j'ai 3 paquets avec 3 classes que je veux dans 4ème paquet et 4ème classe pour instancier un objet de l'un des trois classes dans les 3 paquets selon l'entrée de l'utilisateur. –
Voulez-vous dire cela?
Class c = Class.forName("java.lang.String");
- 1. Obtenir un chemin de classes complet à partir d'une classe
- 2. Comment créer un objet Bitmap à partir d'un objet Graphics?
- 3. Comment exécuter un package SSIS à partir de .NET?
- 4. Comment créer un objet à partir de 2 baies?
- 5. Créer le chemin du fichier à partir de variables
- 6. Comment créer un objet à partir de String?
- 7. Comment créer un package pour différents fichiers?
- 8. créer un flux de sortie d'objet à partir d'un objet
- 9. Comment créer un package de déploiement Web pour IIS WebSite et utiliser des manifestes/paramètres standard
- 10. Comment utiliser le package wx.lib.docview?
- 11. Créer un nouvel objet de classe
- 12. WSPBuilder: Créer un package de déploiement
- 13. Comment utiliser BITS pour télécharger à partir d'un chemin UNC?
- 14. Réflexion: Obtenir FieldInfo à partir de PropertyInfo
- 15. Comment créer un objet fantaisie sans classe d'interface dans AMOP?
- 16. Instancier une classe à partir d'un objet de classe
- 17. Obtenir Textmate pour créer le nom de classe de chargement automatique de PHP à partir du chemin de fichier
- 18. Comment faire référence à un chemin de classe à partir de Gradle 0.6
- 19. Comment créer un effet de réflexion pour TextView en android
- 20. Comment créer un objet dans une classe?
- 21. C# objet de réflexion [] question
- 22. Comment définir le chemin de classe pour rJava dans R?
- 23. Comment créer un objet requis pour le constructeur de classe en inversion de contrôle?
- 24. Créer un objet à partir de NSString du nom de classe dans Objective-C
- 25. Créer un objet polynomial à partir d'un nombre en utilisant la classe de changement
- 26. Comment créer un objet de classe java dans excel vba
- 27. Comment créer un objet Image à partir d'une icône à utiliser avec les éléments ToolStripStatusLabel
- 28. Réflexion Java - Obtention d'un type à partir d'un objet pour instancier un générique
- 29. Comment créer un document XML à partir d'un objet .NET?
- 30. Comment utiliser la réflexion pour obtenir un constructeur par défaut?
Pouvez-vous préciser ce que vous entendez par _ _ Exactement ce que informations avez-vous à travailler avec? +1 au commentaire de @ BalusC également. –
Que voulez-vous dire par "classpath"? Le nom complet de la classe dans un 'java.lang.String' ou l'emplacement du chemin de classe dans un' java.net.URL' (obtenu par 'ClassLoader # getResource()') ou un chemin de fichier absolu dans 'java.io. Fichier'? – BalusC
Classpath? Si vous voulez dire quelque chose le long des lignes "org.mycompany.FirstClass" que vous êtes prêt à partir! Ce type de chaîne s'appelle Fully Qualified Name. – Rekin