Java Reflection - Obtenir la liste des paquets
Je suis la construction d'une application Java qui a un certain nombre de paquets différents. Je veux être en mesure de dire par programme paquets qui existent dans l'application de commencer avec un pré-fix. Est-il de toute façon pour ce faire avec la réflexion Java Api? Je n'ai pas vu quelque chose comme ça liées à la réflexion api.
Exemple:
com.app.controls.text
com.app.controls.picker
com.app.controls.date
etc
Je veux énumérer toutes ces en sachant que le préfixe "com.app.les contrôles" et comprendre qu'un nouveau paquet pourrait être intégrées dans le futur.
Merci!
source d'informationauteur Derek Gebhard
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire en utilisant Package.getPackages()qui retourne un tableau de tous les paquets connus pour le chargeur de classe actuel. Vous devrez manuellement boucle à travers la matrice et de trouver ceux avec le préfixe approprié à l'aide de getName().
Voici un exemple rapide:
Noter que cette technique ne retourne que les paquets définis dans la classe loader. Si vous avez besoin des paquets à partir d'un autre chargeur de classe, il y a quelques options:
Arranger les choses pour que votre programme peut exécuter le code ci-dessus à partir de l'intérieur de la classe loader. Cela nécessite une certaine organisation de votre base de code, qui peut ou peut ne pas être faisable.
Utiliser la réflexion pour appeler le (normalement protégée) méthode getPackages() sur le chargeur de classe. Cela ne fonctionnera pas si le programme est en cours d'exécution en vertu d'un gestionnaire de sécurité.
Paquets existent quasiment pas de le POV de réflexion, ils sont assez invisible, sauf dans les chargeurs de classe.
Basé sur Sean répondre et à l'aide de la réflexion pour obtenir une liste de paquets - éventuellement en ignorant ceux qui sont vides: