Трейт scala.annotation.ConstantAnnotation
трейт ConstantAnnotation extends StaticAnnotation
Классы аннотаций, расширяющие этот трейт, принимают только константные значения в качестве аргументов.
Обратите внимание, что этот трейт расширяет StaticAnnotation, поэтому константные аннотации сохраняются в файле класса.
Реализация требует, чтобы аргументы константных аннотаций передавались в виде именованных аргументов, за исключением случая единственного аргумента, который тогда определяет параметр аннотации с именем value.
Константные аннотации могут использовать аргументы по умолчанию. Обратите внимание, что внутреннее представление использования аннотации (которое видно, например, для плагинов компилятора) содержит только явно указанные аргументы.
Константные аннотации не допускают определения вспомогательных конструкторов, и основной конструктор должен иметь один список параметров.
Пример:
class Ann(value: Int, x: Int = 0) extends scala.annotation.ConstantAnnotation
class Test {
def someInt = 0
@Ann(value = 0, x = 1) def g = 0
@Ann(0) def f = 0 // Internal representation contains `@Ann(value = 0)`
@Ann(someInt) // error: argument needs to be a compile-time constant
}
| Суперанимации | |
|---|---|
| Известные подтипы |
© 2002-2022 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://scala-lang.org/api/3.1.1/scala/annotation/ConstantAnnotation.html