Пакет scala.annotation.meta
пакет meta
Члены типа
final класс beanGetter extends Annotation with StaticAnnotation
final класс beanSetter extends Annotation with StaticAnnotation
final класс companionClass extends Annotation with StaticAnnotation
При определении неявного класса компилятор Scala создаёт для него неявный метод преобразования. Аннотации @companionClass и @companionMethod управляют тем, куда попадает аннотация на неявном классе. По умолчанию аннотации на неявном классе добавляются только к классу.
final класс companionMethod extends Annotation with StaticAnnotation
При определении неявного класса компилятор Scala создаёт для него неявный метод преобразования. Аннотации @companionClass и @companionMethod управляют тем, куда попадает аннотация на неявном классе. По умолчанию аннотации на неявном классе добавляются только к классу.
final класс companionObject extends Annotation with StaticAnnotation
final класс field extends Annotation with StaticAnnotation
final класс getter extends Annotation with StaticAnnotation
final класс languageFeature extends Annotation with StaticAnnotation
final класс param extends Annotation with StaticAnnotation
final класс setter extends Annotation with StaticAnnotation
© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.13.0/scala/annotation/meta/index.html
При определении поля компилятор Scala создаёт до четырёх аксессоров: геттер, сеттер, и если поле аннотировано
@BeanProperty, ещё и бин-геттер и бин-сеттер.Например, в следующем определении класса
существует шесть сущностей, которые могут нести аннотацию
@myAnnot: параметр конструктора, сгенерированное поле и четыре аксессора.По умолчанию, аннотации на (
val-,var- или простых) параметрах конструктора добавляются к параметру, а не к другим сущностям. Аннотации на полях по умолчанию добавляются только к полю.Мета-аннотации в пакете
scala.annotation.metaиспользуются для управления тем, куда копируются аннотации на полях и параметрах класса. Это делается путём аннотирования типа аннотации или класса аннотации одной или несколькими мета-аннотациями в этом пакете.Аннотирование типа аннотации
Мета-аннотации назначения могут быть помещены на тип аннотации при создании экземпляра аннотации. В следующем примере, аннотация
@Idбудет добавлена только к бин-геттеруgetX.import javax.persistence.Id class A { @(Id @beanGetter) @BeanProperty val x = 0 }Чтобы аннотировать и поле, необходимо добавить мета-аннотацию
@field.Синтаксис можно улучшить с помощью псевдонима типа:
object ScalaJPA { type Id = javax.persistence.Id @beanGetter } import ScalaJPA.Id class A { @Id @BeanProperty val x = 0 }Аннотирование класса аннотации
Для аннотаций, определённых на Scala, можно указать значение по умолчанию в классе аннотации, например
Это изменяет только значение по умолчанию для аннотации
myAnnotation. При создании экземпляра аннотации целевое место назначения всё ещё можно указать, как описано в последнем разделе.