Spec-Zone.ru › Scala 3.2

Трейт ConstantAnnotation.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.2.0/scala/annotation/ConstantAnnotation.html

Spec-Zone.ru

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