Spec-Zone.ru › Scala 2.13 Library

Пакет scala.annotation.meta

пакет meta

При определении поля компилятор Scala создаёт до четырёх аксессоров: геттер, сеттер, и если поле аннотировано @BeanProperty, ещё и бин-геттер и бин-сеттер.

Например, в следующем определении класса

class C(@myAnnot @BeanProperty var c: Int)

существует шесть сущностей, которые могут нести аннотацию @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, можно указать значение по умолчанию в классе аннотации, например

@getter
class myAnnotation extends Annotation

Это изменяет только значение по умолчанию для аннотации myAnnotation. При создании экземпляра аннотации целевое место назначения всё ещё можно указать, как описано в последнем разделе.

Источник
package.scala
Линейные надтипы
AnyRef, Any

Члены типа

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

Spec-Zone.ru

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