cs_loloof64
Messages postés342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention 6 novembre 2012
-
1 févr. 2010 à 22:20
cs_loloof64
Messages postés342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention 6 novembre 2012
-
2 févr. 2010 à 16:09
Salut à tous
J'ai lu le tutoriel "INTÉGRER DES IMAGES DANS UN JAR AVEC ECLIPSE" d'Icarius44, même si je connaissais un petit peu les manipulations.
Ce qui m'a vraiment plu, c'est l'explication sur l'utilisation obligatoire de la formule
new ImageIcon(this.getClass().getRessource(cheminFichier))
au lieu du simple
new ImageIcon(cheminFichier)
pour obtenir l'image contenu DANS UN JAR.
Par contre, est-ce que si je passe une reference statique de la classe au lieu de this, par exemple
new ImageIcon(MaClasse.class.getRessource(cheminFichier))
fonctionnera aussi bien ? Et pourquoi ?
(Le tutoriel date de 2008, j'ai donc préféré poser la question dans le forum)
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 1 févr. 2010 à 22:43
Salut,
C'est pareil : que tu passe par une instance de classe ou une référence statique, c'est l'instance d'une Class qui fournit la méthode getRessource
______________________________________
DarK Sidious
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013131 2 févr. 2010 à 07:47
Salut,
Un objet de type Class permet l'introspection sur n'importe quelle référence statique ou une instance de classe. C'est java qui le propose par défaut.
Ainsi, n'importe quelle classe java hérite de la classe "Object" ce qui lui ajoute tout un tas de fonctions et méthodes tout plus utiles les unes que les autres, voir la javadoc.
C'est la jvm de java qui charge les classes d'un projet au lancement de celui-ci, et les répertorie dans sa table d'index. C'est ainsi qu'on peut faire une introspection des classes disponibles sans même les avoir instanciées au préalable.
______________________________________
DarK Sidious
Mais là tu rentre dans un domaine assez complexe : tu n'as pas besoin de connaître tout cà pour faire un programme. Par contre, si tu es curieux et que tu veux comprendre comment ca marche, c'est un domaine très intéressant.
______________________________________
DarK Sidious
cs_loloof64
Messages postés342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention 6 novembre 2012 1 févr. 2010 à 23:46
Salut DarkSidious
Je te remercie beaucoup pour ta réponse.
Je vais t'avouer très honnêtement que ca me parait bizarre que dans les deux cas on obtienne une instance (en effet, la simple notation générique du retour de la méthode getClass dans la javadoc suffit à me troubler => Sans trop vouloir dévier, les génériques je les utilise mécaniquement avec les Collections, mais je ne les programme pas encore ... d'où mon trouble avec cette écriture très formelle de Sun).
De même que le ClassePersonelle.class me trouble quelque part, même si j'admets sans réfléchir qu'il s'agit d'une référence de Class<ClassPersonelle> statique (c'est bien cela, d'ailleurs ?)
En tous cas, ma 1ere question est résolue , et ce que j'en comprenne ou non les tenants et les aboutissants.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_loloof64
Messages postés342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention 6 novembre 2012 2 févr. 2010 à 11:22
Salut DarkSidiuos,
merci de m'avoir éclairé sur ce point.
Pour ma propre culture, aurais-tu un lien (si possible autre que la doc officielle de Sun, que je ne comprends que rarement du 1er coup) d'une simple explication sur la manière dont la java virtual machine repertorie les classes utilisées dans sa table d'index ?
(En fait, ce qui m'intéresse ce n'est pas le b.a-b.a mais c'est la mnière dont elle fait le lien entre les methodes d'instances ou statiques appelées - idem d'ailleurs pour les attributs- et les classes appartenant => J'ai mon idée là-dessus, elle utiliserait sa porpre api de retrospection ...)
Après je l'admet, ca commence à devenir complexe mais interessant pour que j'y attribue de l'importance
cs_loloof64
Messages postés342Date d'inscriptionvendredi 1 septembre 2006StatutMembreDernière intervention 6 novembre 2012 2 févr. 2010 à 16:09
Merci
Je vais lire ce document avec attention.
Par contre, je n'ai pas voulu emettre un avis défavorable sur la javadoc, au contraire, elle me semble indispensable et plus intuitive que des documentations MSDN par exemple. Mais je suis juste un peu coincé avec la programmation générique, domaine dans lequel il faudra vraiment que je crée mes propres classes, avec wildcard et joker tant qu'à progresser
Le problème que j'ai eu, et ce pourquoi les détails de la rélection m'interessent tant, c'est que j'ai écrit un code MIDLET MIDP2 sur la plateforme Eclispe Galileo Pulsar, et ce projet intègre des images gif. Malheureusement, je n'arrivais pas à charger les images en passant une classe par référence statique "au ClassLoader", mais avec une variable d'instance ca passait sans problème. Peut être que mon code était légèrement érroné quand j'ai passé la référence statique (Je l'ai contourné grâce au PATTERN SINGLETON appliqué sur cette même classe). Mais je te fais confiance, il y a bien plus utile que à apprendre que les détails de chargement des classes par la jvm en priorité