Dies ist ein Memo, das ich aufgegeben habe, um eine benutzerdefinierte Anmerkung für Lombok zu erstellen.
Zusammenfassung in 3 Zeilen:
Wie ich es versucht habe:
@ Value
Ich liebe es, aber ich kann den Verwendungsteil des von lombok aus Eclipse erstellten Getters mit Strg + Umschalt + F nicht rückwärts zeichnen. Es ist schwer zu sagen.@ Value
, der Stelle, an der die Funktion @ Getter
aufgerufen wird, sollte gelöscht werden.Also habe ich zuerst Iroha gegoogelt, um benutzerdefinierte Anmerkungen mit Lombok zu machen:
java - Create custom annotation for Lombok - Stack Overflow
Implementing a Custom Lombok Annotation | Baeldung
Ja, ich habe es erwartet, aber es scheint aufgrund der Java-Bytecode-Operation ärgerlich und schwierig zu sein. Ich frage mich, ob ich aufhören soll ... Nein, ich möchte zuerst "@ Value- @ Getter" machen. Was ist also mit dem Quellcode von "@ Value"?
--Anmerkung
handleFlagUsage (...)
sieht aus wie ein kurzer Blick. Es scheint, dass Sie es aus der Einstellungsdatei lesen und @ Value
verwenden, um OK / NG zu überprüfen. Daher ist es nicht erforderlich, es als benutzerdefinierte Anmerkung zu kopieren.
--deleteAnnotationIfNeccessary (...)
Die zugehörigen Elemente sind auch mit der experimentellen Ära kompatibel, sodass dies auch nicht zum Kopieren als benutzerdefinierte Anmerkung erforderlich ist.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);
Es scheint, dass Sie sich bis zu diesem Punkt selbst kopieren und einfügen können, aber plötzlich "Das ... Übrigens, ich verwende das System com.sun.tools ... Ich bin von der Einführung des Java9-Moduls hier betroffen. Was soll ich also tun? Ich bin ratlos.
Vorerst habe ich den Artikel gegoogelt, als ich mich mit com.sun.tools mit maven bis zur java8-Ära befasste.
Java / Maven3 / tools.jar (<scope> = system, <systemPath>) --Glamenv-Septzen.net
java - Missing artifact com.sun:tools:jar - Stack Overflow
Oh ja, es war so. Dann schauen wir uns an, was mit java9 passiert ist ...
Accessing com.sun.tools.javac.util from Java 9 - Stack Overflow
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
Es ist wirklich verdächtig, in die Wolken zu gehen. Oder besser gesagt, es schreit schon. Gefährlich. Wenn Sie sich die Korrespondenz auf der Eclipse-Seite kurz ansehen, scheint es, dass die Inhalte zwar leicht unterschiedlich sind, aber alle Schwierigkeiten haben, auf die innere Java-Klasse zuzugreifen:
--Java - Über eingeschränkten Klassenzugriff | teratail
Das ist schlecht. Die Anpassung von maven / pom.xml scheint zunächst gefährlich zu sein, und die Kombination von maven / eclipse erhöht auch die Komplexität.
Erstens scheinen https://github.com/peichhorn/lombok-pg, eine Sammlung von benutzerdefinierten Lombok-Anmerkungen von Drittanbietern (die ich zum ersten Mal in dieser Umfrage erfahren habe), und Lombok selbst mit Ant erstellt worden zu sein. Atmosphäre, die für Eclipse IDE ziemlich angepasst ist. (Ich bin nicht sicher, ob es in die IDE integriert ist oder für die Entwicklung mit der IDE, aber es scheint trotzdem ziemlich nervig zu sein)
Ich habe einen Artikel gefunden, der es schwierig macht, Lombok mit Java 9 oder höher zu warten.
--Lomboks Java 9 oder höher Support Story - Qiita
Wenn benutzerdefinierte Annotationen nicht funktionieren, können wir dann eine Meta-Annotation erstellen, die vorhandene Annotationen aggregiert? Ich habe versucht zu googeln ...
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
Anscheinend scheint es schwierig und es wird nicht unterstützt.
In Anbetracht des oben Gesagten möchte ich nur das Hinzufügen der folgenden Anmerkungen vereinfachen ... Trotzdem sind die Kosten für die Realisierung ungewöhnlich hoch.
@AllArgsConstructor
@EqualsAndHashCode
@ToString
(In manchen Fällen@With )
Daher werde ich dieses Mal aufhören, benutzerdefinierte Anmerkungen zu erstellen und nur das zu kopieren, was ich sicher benötige.
Recommended Posts