Spec-Zone.ru › Scala 3.1

Трейт 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
}
Суперанимации
трейт StaticAnnotation
класс Annotation
класс Object
трейт Matchable
класс Any
Известные подтипы
класс SerialVersionUID
класс deprecated
класс deprecatedInheritance
класс deprecatedOverriding
трейт ClassfileAnnotation
класс elidable
класс implicitAmbiguous
класс implicitNotFound
класс nowarn

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API