C'est un mémo auquel j'ai renoncé en essayant de créer une annotation personnalisée pour Lombok.
Résumé en 3 lignes:
Comment j'ai essayé de le faire:
@ Value
J'adore, mais je ne peux pas inverser la partie d'utilisation du getter créé par lombok depuis Eclipse avec Ctrl + Shift + F. C'est difficile à dire.@ Value
, l'endroit où la fonction @ Getter
est appelée doit être supprimé.Donc, j'ai d'abord cherché sur Iroha pour créer des annotations personnalisées avec Lombok:
java - Create custom annotation for Lombok - Stack Overflow
Implementing a Custom Lombok Annotation | Baeldung
Ouais, je m'y attendais, mais cela semble être ennuyeux et difficile à cause du fonctionnement du code octet de Java. Je me demande si je devrais arrêter ...
Non, je veux créer @ Value- @ Getter
en premier lieu, alors qu'en est-il du code source de @ Value
?
--Annotation
handleFlagUsage (...)
ressemble à un coup d'œil rapide, il semble que vous le lisez à partir du fichier de configuration et que vous utilisez @ Value
pour vérifier OK / NG, il n'est donc pas nécessaire de copier en tant qu'annotation personnalisée.
--deleteAnnotationIfNeccessary (...)
Les éléments associés sont également compatibles avec l'ère expérimentale, donc cela est également inutile pour la copie en tant qu'annotation personnalisée.handleFieldDefaults.generateFieldDefaultsForType(typeNode, annotationNode, AccessLevel.PRIVATE, true, true);
handleConstructor.generateAllArgsConstructor(typeNode, AccessLevel.PUBLIC, staticConstructorName, SkipIfConstructorExists.YES, annotationNode);
handleConstructor.generateExtraNoArgsConstructor(typeNode, annotationNode);
handleGetter.generateGetterForType(typeNode, annotationNode, AccessLevel.PUBLIC, true, List.<JCAnnotation>nil());
handleEqualsAndHashCode.generateEqualsAndHashCodeForType(typeNode, annotationNode);
handleToString.generateToStringForType(typeNode, annotationNode);
Il semble que vous puissiez vous copier et coller jusqu'à ce point, mais soudainement "Cela ... En parlant de cela, j'utilise le système com.sun.tools .... Je suis à perte.
Pour le moment, j'ai recherché l'article sur Google concernant com.sun.tools avec maven jusqu'à l'ère java8.
Java / Maven3 / tools.jar (<scope> = system, <systemPath>) --Glamenv-Septzen.net
java - Missing artifact com.sun:tools:jar - Stack Overflow
Oh ouais, c'était comme ça. Ensuite, regardons ce qui s'est passé avec java9 ...
Accessing com.sun.tools.javac.util from Java 9 - Stack Overflow
Java Platform, Standard Edition Oracle JDK 9 Migration Guide, Release 9
Declare maven dependency on tools.jar to work on JDK 9 - Stack Overflow
java - Build error: missing artifact com.sun:tools:jar:1.6 - Stack Overflow
C'est vraiment suspect d'aller dans les nuages. Ou plutôt, ça crie déjà. Dangereux. Si vous regardez rapidement la correspondance côté Eclipse, il semble que bien que le contenu soit légèrement différent, ils ont tous du mal à accéder à la classe interne Java:
--Java --À propos de l'accès restreint aux classes | teratail
C'est mauvais. L'ajustement de maven / pom.xml semble d'abord dangereux, et la combinaison de celui-ci et du côté Eclipse augmente également la complexité.
En premier lieu, il semble que https://github.com/peichhorn/lombok-pg, qui est une collection d'annotations personnalisées Lombok tierces (que j'ai apprises pour la première fois dans cette enquête), et Lombok lui-même sont construits à l'aide d'Ant. Ambiance assez ajustée pour Eclipse IDE. (Je ne sais pas si c'est intégré à l'IDE ou pour le développement avec l'IDE, mais cela semble quand même assez ennuyeux)
J'ai trouvé un article qui rend difficile la maintenance de Lombok avec Java 9 ou version ultérieure.
Eh bien, si les annotations personnalisées ne fonctionnent pas, pouvons-nous créer une méta-annotation qui regroupe les annotations existantes? J'ai essayé de google ...
java - Is it possible to use Lombok annotations as a meta-annotation? - Stack Overflow
Allow usage of annotations as meta-annotations · Issue #557 · rzwitserloot/lombok · GitHub
Feature Request: Allow multiple lombok's annotations to be aggregated into one · Issue #1226 · rzwitserloot/lombok · GitHub
Apparemment, cela semble difficile et il n'est pas pris en charge.
Compte tenu de ce qui précède, ce que je veux faire en premier lieu est de faciliter l'ajout des annotations suivantes ... Malgré cela, le coût de réalisation est anormalement élevé.
@AllArgsConstructor
@EqualsAndHashCode
@ToString
(Dans certains cas@With )
Par conséquent, cette fois, je renoncerai à créer des annotations personnalisées et ne copierai que ce dont j'ai besoin en toute sécurité.
Recommended Posts