In Java kann ich @SomeAnnotation("abc"+"cd")
schreiben. Wenn ich das gleiche in groovy mache, habe ich den Kompilierungsfehler 'erwartet ... eine Inline-Konstante' zu sein. Wie kann ich String-Konstanten innerhalb von Annotationen in groovy verketten?Groovy: Wie verketten String-Konstanten in Annotation?
Antwort
Sie können nicht, da dieser Ausdruck in Groovy keine Kompilierzeitkonstante ist.
Sie haben ein paar Optionen hier
eine einfache Java-Schnittstelle mit Konstanten deklarieren und es von Groovy verwenden
@SomeAnnotation(Constants.MY_CONST)
Wenn Sie Quellcode Annotation ändern können Sie closure annotation parameters mit versuchen
Sie können auch mit compile-time AST transformations hier spielen, um Ihr Ziel auf schmutzige Weise zu erreichen. (Sehr wahrscheinlich wollen Sie nicht mit AST spielen)
Unfähigkeit Ausdrücke zu verwenden, wie 'aaa' + 'bbb'
ist nicht das einzige Problem, können Sie Fehler wie Attribute 'value' should have type 'java.lang.String'; but found type 'java.lang.Object'
sehen auch bei Kompilierung-Ausdrücken. Hier ist ein ähnliches Problem GROOVY-3278 mit möglichen Problemumgehungen.
- 1. C# Kompilierzeitverkettung für Stringkonstanten
- 2. Funktioniert Proguard statische Stringkonstanten zu verdecken?
- 3. groovysh und groovy Klassen Sichtbarkeit und Annotation Parsing
- 4. Hat Groovy eine Annotation für die Synchronisation auf Blockebene?
- 5. Jenkins Pipeline als Code Groovy Fehler auf Class Annotation
- 6. Wie in Groovy
- 7. Wie zwei numpy ndarrays verketten ohne verketten
- 8. Wie dies in Ruby verketten
- 9. Wie verketten Methoden in PHP?
- 10. Annotation eine andere Annotation
- 11. Wie kann ich den Raumschiffbetreiber von groovy für die Multilevel-Sortierung verketten?
- 12. in groovy
- 13. Wie bekomme ich den Annotation-Wert aus einer Java-Datei mit Groovy?
- 14. Wie funktioniert @Immutable in groovy?
- 15. Groovy: wie Eigenschaften in Basisklasse
- 16. Wie Groovy Klasse in Eclipse
- 17. Wie GOTO-Anweisung in Groovy?
- 18. Wie mehrere Funktionen verketten?
- 19. Wie JavaScript-Datumsfunktionen verketten
- 20. Erlang - wie Bitfolgen verketten
- 21. Individuelle Annotation wie @Value
- 22. verketten Methoden in Python wie in Ruby
- 23. Groovy CompileStatic auf Android vermasselt Groovy Truth
- 24. Verketten Strings in C
- 25. Verketten Variablennamen in C#
- 26. Verketten in PostgreSQL
- 27. Verketten Schreibparameter in C++
- 28. verketten Array in Julia
- 29. Verketten in jQuery Selector
- 30. Verketten Spinnen in scrapy
Sie können nicht. Dies muss eine Kompilierzeitkonstante sein. – Opal