Spec-Zone.ru › Scala 2.12 Library

Пакет scala.annotation.meta

пакет meta

При определении поля компилятор Scala создаёт до четырёх аксессоров: getter, setter и, если поле аннотировано с помощью @BeanProperty, bean getter и bean setter.

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

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

существует шесть сущностей, которые могут нести аннотацию @myAnnot: параметр конструктора, сгенерированное поле и четыре аксессора.

По умолчанию аннотации на (val-, var- или обычных) параметрах конструктора добавляются к параметру, а не к другим сущностям. Аннотации на полях по умолчанию добавляются только к полю.

Мета-аннотации в пакете scala.annotation.meta используются для управления тем, куда копируются аннотации на полях и параметрах класса. Это делается путём аннотирования типа аннотации или класса аннотации одной или несколькими из мета-аннотаций в этом пакете.

Аннотирование типа аннотации

Мета-аннотации назначения могут быть помещены на тип аннотации при создании экземпляра аннотации. В следующем примере аннотация @Id будет добавлена только к bean getter 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
Линейные супертипы

Типовые члены

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.12.9/scala/annotation/meta/index.html

Spec-Zone.ru

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