J'ai un projet. Je n'utilise pas Lombok. J'utilise des getters et des setters créés manuellement.
Maintenant, je veux importer Lombok. Après l'importation, j'utiliserai pour toutes les entités.
Dois-je ajouter manuellement @Data
à toutes les entités? Et je dois supprimer toutes les entités manuellement? N'existe-t-il pas un autre moyen de convertir automatiquement ces classes?
Je n'ai trouvé aucune question comme celle-ci:
3 Réponses :
Dans IntelliJ IDEA avec le plugin Lombok installé, vous devriez avoir cette fonctionnalité:
De cette façon, vous pouvez refactoriser vos classes une par une. Je ne sais pas s'il existe des outils de refactoring par lots pour Lombok.
Si vous êtes intéressé par la refactorisation par lots, veuillez voter pour le issue # 574 < / a> dans le tracker de plugin Lombok. Ou même contribuer au code de ce projet.
(source: github.io ) sous>
Dans Eclipse, vous pouvez sélectionner plusieurs classes dans la barre latérale et appliquer (certaines) opérations en masse. IntelliJ a-t-il une option comme celle-là?
@chrylis chez intellij, lorsque je sélectionne plusieurs classes dans la barre latérale, j'ai l'option d'activer uniquement delombok. Ce que Naxa montre n'est que pour une classe et dans le menu en haut. Eclipse a cette option chrylis?
@chrylis Malheureusement, non. Je l'ai testé sur mon propre projet. Lors de la sélection d'une seule classe, je peux exécuter Refactor | Lombok
ou Refactor | Delombok
. Lors de la sélection de plusieurs classes, je peux exécuter Refactor | Delombok
, mais Refactor | Lombok
est désactivé. Essayé dans IntelliJ IDEA EAP 2018.3.3 avec la dernière version du plugin Lombok.
@asdasasd Je voudrais vous avertir qu'il existe un problème en suspens lié à cette action de refactorisation - github.com/mplushnikov/lombok-intellij-plugin/issues/555
MISE À JOUR du commentaire précédent: le numéro 555 est fermé en tant que duplicata de # 688 github .com / mplushnikov / lombok-intellij-plugin / issues / 688
Comme une entité compte en moyenne dix champs, il y a beaucoup de texte à supprimer par classe. En utilisant un formatage standard et une seule ligne entre les méthodes, ces 10 getters et dix setters signifient 10 * 2 * 4 = 80
lignes par classe. Tout ce que vous avez à ajouter une seule annotation @Data
.
Je me concentrerais donc sur la suppression et j'écrirais une simple regex reconnaissant les getters et les setters triviaux. L'ajout de l'annotation à tous les fichiers modifiés par la suite est quelque chose que je ferais volontiers manuellement, même pour des dizaines d'entités. En oublier un n'est pas un problème car cela conduit à des erreurs de compilation évidentes.
Une expression régulière triviale non testée pour les getters triviaux:
[ \t]+public [\\w<,> ]+ get[A-Z](\\w+)\\(\\)\\s*\\{\\s*return\\s+[a-z]\\1;\\s*\\}\\s*\n
regex peut être parfait (le mien s'arrête, par exemple, lorsque les tableaux sont renvoyés ou lorsque vous utilisez un formatage ou un nommage non standard; c'est facilement réparable, mais d'autres problèmes peuvent survenir). Néanmoins, il peut faire son travail.
Mon expression régulière n'autorise aucun commentaire dans le corps de la méthode, mais je n'appellerais pas un getter commenté trivial.
Désolé, je n'ai pas compris. Comment vais-je utiliser ce regex, avec un script avec javascript?
@asdasasd Le regex a la syntaxe Java, mais cela n'a guère d'importance. Sous Linux, je choisirais quelque chose comme perl -pi -e '[\ t] + public [\ w <,>] + get [AZ] (\ w +) \ (\) \ s * \ { \ s * return \ s + [az] \ 1; \ s * \} \ s * \ n '* .java
, mais soyez prudent car il écrase les sources sans demander (vous utilisez le contrôle de version, non! ). Je fais assez souvent des choses similaires.
La meilleure façon dans IntelliJ IDEA est d'utiliser le raccourci Commande + Maj + A et de choisir le refactor que vous voulez.