Ricerca…


Dichiarazione di un'annotazione

Le annotazioni sono mezzi per allegare metadati al codice. Per dichiarare un'annotazione, metti il ​​modificatore di annotazione davanti a una classe:

annotation class Strippable

Le annotazioni possono avere meta-anotazioni:

    @Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
    annotation class Strippable

Le annotazioni, come altre classi, possono avere costruttori:

annotation class Strippable(val importanceValue: Int)

Ma a differenza di altre classi, è limitato ai seguenti tipi:

  • tipi che corrispondono ai tipi primitivi di Java (Int, Long ecc.);
  • stringhe
  • classi (Foo :: classe)
  • enumerazioni
  • altre annotazioni
  • matrici dei tipi sopra elencati

Meta-annotazioni

Quando si dichiara un'annotazione, è possibile includere meta-informazioni utilizzando le seguenti meta-annotazioni:

  • @Target : specifica i possibili tipi di elementi che possono essere annotati con l'annotazione (classi, funzioni, proprietà, espressioni, ecc.)

  • @Retention specifica se l'annotazione è archiviata nei file di classe compilati e se è visibile tramite reflection in fase di esecuzione (per impostazione predefinita, entrambi sono veri).

  • @Repeatable consente di utilizzare la stessa annotazione su un singolo elemento più volte.

  • @MustBeDocumented specifica che l'annotazione fa parte dell'API pubblica e deve essere inclusa nella firma della classe o del metodo indicata nella documentazione dell'API generata.

Esempio:

@Target(AnnotationTarget.CLASS, AnnotationTarget.FUNCTION,
        AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)
@Retention(AnnotationRetention.SOURCE)
@MustBeDocumented
annotation class Fancy


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow