According to the documentation: https://kotlinlang.org/docs/reference/annotations.html
You can apply multiple annotations to a single site-use target, but is there a way to apply the same annotation to multiple site-use targets?
My use-case is decorating classes with annotations for SimpleXML. To use an immutable data class
, you have to annotate both the field and the constructor parameter:
data class Data(
@field:Element(name = "ID")
@param:Element(name = "ID")
val id: Int,
@param:Element(name = "TEXT")
@field:Element(name = "TEXT")
val text: String)
For data classes with many fields, you can easily end up with 3x as many annotations as actual code, and it would be nice to eliminate the duplication. This is especially annoying when you have to use a complicated annotation like ElementUnion
which can be multiple lines on its own.
Unfortunately, as of Kotlin 1.3, there's no syntax for this use case
来源:https://stackoverflow.com/questions/47082194/is-it-possible-to-apply-a-single-annotation-to-multiple-use-site-targets-in-kotl