mercredi 22 août 2012

[ECLIPSE] Raccourci clavier


http://www.bugz.fr/wp-content/uploads/2010/11/eclipse_ide_icon.png
 Bonjour,

Voici une liste de raccourci clavier bien pratique sous Eclipse :
  • CTRL+ESPACE : Complétion.
  • F3 ou CTRL+Clic : Afficher la déclaration (classes, variables, méthodes…).
  • ALT+MAJ+J : Ajout d'un commentaire d'élément 
  • ALT+FLECHE GAUCHE/ALT +FLECHE DROITE : Historique des positions du curseur.
  •  CTRL+SHIFT+F : Indentation automatique
  • CTRL+M : Agrandir la vue courante.
  • CTRL+F7 : Passer à la vue suivante.
  • CTRL+SHIFT+F7 : Passer à la vue précédente.
  • CTRL+D : Supprimer la ligne courante.
  • ALT+FLECHE HAUT/ALT+FLECHE BAS : Déplacer la ligne ou la sélection vers le haut/vers le bas.
  • CTRL+SHIFT+O : Réorganiser les « import ».
  • CTRL+SHIFT+R : Rechercher un fichier dans le workspace.
  • CTRL+O : Outline, pour afficher les membres de la classe actuelle et s’y rendre. Appuyer une deuxième fois CTRL+O affiche également les éléments hérités.
  • CTRL+T : Arbre d’héritage.
  • CTRL+ALT+H : Hiérarchie d’appels.
  • CTRL+O : Afficher l'OutLine du fichier en cours
Vous trouverez la liste complète ici : http://eclipse-tools.sourceforge.net/Keyboard_shortcuts_%283.0%29.pdf

vendredi 17 août 2012

[JAVA] Introspection/Reflexivité

Ci-dessous un exemple simple d'utilisation de l'introspection ou reflexivité en java.
Tout d'abord je récupère le nom de ma classe.
Je crée une variable objet qui va me permettre de stocker la nouvelle instance de cette classe.
Pour appeler une méthode, dans mon cas, la méthode s'appelle, "setIdentifiant" et a pour parametre un "String". Il faut donc créer deux tableauxqui vont contenir
  • la liste de types des paramètres (String.class ici)
  • la liste des valeurs des paramètres ("test" ici)
Il faut ensuite, créer un objet Method  qui va nous servir à appeler notre méthode. On lui passe en paramètre, le nom de la méthode et la liste des types des paramètres de la méthode.

Nous pouvons maintenant appeler(ou invoquer )la méthode en lui passant en paramètre notre objet et la liste des valeurs de la méthode.

//Récupération du nom de classe(avec le package)
String nomClasse=MaClasse.class.getCanonicalName();
Object monObjet = null;

Class c = Class.forName(nomClasse);

// Instanciation d'un nouvel objet de cette classe
monObjet = c.newInstance();

// Tableau contenant les types des arguments
Class[] paramTypes = new Class[1];
               
// Tableau contenant les valeurs des arguments           
Object[] arg = new Object[1];

// Appel de la méthode
paramTypes[0] = String.class;
Method m = c.getMethod("setIdentifiant", paramTypes);
arg[0] = "test";

//Invocation de la méthode
m.invoke(monObjet, arg);


Pour aller plus loin, il faut savoir que l'appel d'une méthode par introspection est plus lourd qu'un appel direct.
Mais celà est à relativiser, vous trouverez dans ce lien, le différence du cout d'appel à une méthode par introspection et sans introspection, ainsi que sur un serveur et une machine simple :
http://buzdin.blogspot.fr/2011/01/is-java-reflection-really-slow.html