2010-11-18 6 views
3

Je nettoyais un code et je suis passé sur com.example.StringHelper contenant 6 ou 7 public static méthodes (par exemple concatStrings(String...), mais pas de champs membres. Un certain nombre de classes sous-classement cette classe juste pour pouvoir appeler concatStrings(str1, str2) sans préfixant avec la classe comme ceci:.. StringHelper.concatStrings(str1, str2)Inline toutes les importations statiques dans Eclipse

Je ne voulais pas les sous-classement une classe juste pour cette raison, donc je me suis cassé un tas de je collais l'importation statique suivant dans le haut de la sous-classement de fichiers après avoir enlevé le extends StringHelper:

import static com.example.StringHelper.*; 

Eclipse a simplifié ceci en importations spécifiques pour seulement les méthodes utilisées.

Question: Existe-t-il un moyen simple d'avoir Eclipse "en ligne" ces importations statiques? Puis-je l'obtenir pour supprimer l'importation statique réelle et préfixer chaque appel avec StringHelper. à la place?

Remarque Ceci est un exemple simplifié, donc ne vous plaignez pas pourquoi nous avons besoin d'un StringHelper en premier lieu.

Répondre

4

Cela fera:

  • Mettez en surbrillance un appel de concatStrings(). Assurez-vous d'inclure les parenthèses dans la surbrillance. Sélectionnez Refactor/Extract Method, appelez-le foo. Assurez-vous de cocher la case "Remplacer 47 occurrences supplémentaires d'instructions par la méthode"
  • Dans votre nouvelle méthode foo, ajoutez le "StringHelper". Préfixe à l'invocation de concatStrings
  • Refact/Inline pour vous débarrasser de foo et remettez vos appels statiques à leur place, avec leurs nouveaux préfixes.
+0

Lorsque je sélectionne concatStrings et que je choisis "Extract Method ...", j'obtiens une fenêtre contextuelle disant "Impossible d'extraire un seul nom de méthode". –

+0

Vous devez également sélectionner les parenthèses, pas seulement le nom de la méthode. –

1

Je ne sais pas s'il existe un moyen automatique, mais je pense que cela peut aider d'une manière manuelle. Supprimez l'importation, puis cliquez sur chaque ligne avec une erreur. Appuyez sur ctrl-1 pour 'correction rapide' et choisissez le correctif rapide qui préfixe le nom du paquet plutôt que d'ajouter une importation.

+0

Merci, mais je ne pense pas que la solution rapide sait à propos de la classe d'où je viens si je supprime l'importation statique. Quoi qu'il en soit, un find-replace sur chaque méthode serait probablement plus rapide (certaines classes utilisent une méthode 20 fois). –

0
Preferences -> Java -> Code Style -> Organize Imports 

Vous pouvez configurer le nombre d'importations nécessaires pour les regrouper.

+0

Je ne me plains pas de casser la chaîne StringHelper. * Statique d'importation en une pour chacune des 3 méthodes utilisées. Je demande si je peux obtenir eclipse pour supprimer complètement les lignes d'importation statiques et préfixer l'appel de méthode avec StringHelper à la place. –

+0

Ah, mes excuses. – Jeremy

0

Préférences> Java> Code de style> Importations: Organiser

"Nombre d'importations statiques nécessaires pour *." Réglez ce paramètre 1.

Questions connexes