Heim Java javaLernprogramm Teilen eines Beispiel-Tutorials für die Kotlin-Annotationsklasse

Teilen eines Beispiel-Tutorials für die Kotlin-Annotationsklasse

Jun 17, 2017 am 11:54 AM
kotlin 分享 实例 教程 注解

Dieser Artikel stellt hauptsächlich die detaillierten Erklärungen und Beispiele der Annotationsklassen von Kotlin vor. Freunde, die sie benötigen, können auf

Kotlins detaillierte Erklärungen und Beispiele der Annotationsklassen

verweisen Anmerkungsdeklaration

Anmerkungen sind eine Möglichkeit, Metadaten an Ihren Code anzuhängen. Um eine Annotation zu deklarieren, platzieren Sie den Annotation-Modifikator vor der Klasse:


annotation class Fancy
Nach dem Login kopieren

Zusätzliche Eigenschaften der Annotation können angegeben werden, indem Sie die Annotationsklasse mit einem Meta- annotieren. Annotation:

  1. @Target gibt die möglichen Arten von Elementen an, die mit dieser Annotation annotiert werden können (Klasse, Funktion, Attribut, Ausdruck usw.); >

  2. @Retention gibt an, ob die Anmerkung in der kompilierten Klassendatei gespeichert wird und ob sie durch Reflektion zur Laufzeit sichtbar sein kann (der Standardwert ist true); 🎜>@Repeatable Ermöglicht die mehrfache Verwendung derselben Annotation für ein einzelnes Element.

  3. @MustBe

    Document

    ed gibt an, dass die Annotation Teil der öffentlichen API ist und sollte in der generierten Signatur der Klasse oder Methode enthalten sein, wie in der API-Dokumentation gezeigt.

  4. @Target

    (AnnotationTarget.CLASS, AnnotationTarget.FUNCTION,
  5.                   AnnotationTarget.VALUE_PARAMETER, AnnotationTarget.EXPRESSION)

@ Aufbewahrung(AnnotationRetention.SOURCE)
@MustBeDocumented

Annotationsklasse Fancy

Verwendung

Wenn Sie den Haupt-

Konstruktor
der Klasse mit Anmerkungen versehen müssen, müssen Sie das Schlüsselwort „constructor“ im Konstruktor hinzufügen Deklaration und fügen Sie davor die Anmerkung hinzu:

@Fancy class Foo {
  @Fancy fun baz(@Fancy foo: Int): Int {
    return (@Fancy 1)
  }
}
Nach dem Login kopieren

Sie können den Eigenschaftsaccessor auch mit Anmerkungen versehen:


class Foo @Inject constructor(dependency: MyDependency) {
  // ……
}
Nach dem Login kopieren

Konstruktor

class Foo {
  var x: MyDependency? = null
    @Inject set
}
Nach dem Login kopieren
Annotation kann einen Konstruktor haben, der Parameter akzeptiert.

Die zulässigen Parametertypen sind:


annotation class Special(val why: String)

@Special("example") class Foo {}
Nach dem Login kopieren

Typen, die nativen Java-Typen entsprechen (Int, Long usw.) .);

  1. String

  2. Enum; Anmerkungen;

  3. Array der oben aufgeführten Typen.
  4. Annotationsparameter können keine nullbaren Typen haben, da die JVM das Speichern von Null als Wert von Annotationseigenschaften nicht unterstützt.
  5. Wenn eine Annotation als Parameter einer anderen Annotation verwendet wird, wird ihrem Namen kein @-Zeichen vorangestellt:

  6. Wenn eine Klasse dies benötigt Anzugebende Parameter: Verwenden Sie für annotierte Parameter Kotlin-Klassen (KClass). Der Kotlin-Compiler konvertiert es automatisch in eine Java-Klasse, sodass Java-Code die Annotation und Parameter normal sehen kann.

Lambda-Ausdrücke Die

-Annotation kann auch für Lambda-Ausdrücke verwendet werden. Sie werden auf die invoke()-Methode angewendet, die den Lambda-Ausdruckskörper generiert. Dies ist nützlich für Frameworks wie Quasar, die Annotationen zur Parallelitätskontrolle verwenden.


annotation class ReplaceWith(val expression: String)

annotation class Deprecated(
    val message: String,
    val replaceWith: ReplaceWith = ReplaceWith(""))
@Deprecated("This function is deprecated, use === instead", ReplaceWith("this === other"))
Nach dem Login kopieren

Annotationsverwendungsziel


Beim Annotieren von Eigenschaften oder Hauptkonstruktor-
import kotlin.reflect.KClass

annotation class Ann(val arg1: KClass<*>, val arg2: KClass<out Any?>)

@Ann(String::class, Int::class) class MyClass
Nach dem Login kopieren
Funktionsparametern

wird dies der Fall sein Da es sich um mehrere Java-Elemente handelt, die aus dem entsprechenden Kotlin-Element generiert wurden, gibt es mehrere mögliche Positionen für diese Annotation im generierten Java-Bytecode. Wenn Sie genau angeben möchten, wie die Anmerkung generiert werden soll, verwenden Sie die folgende Syntax:


Sie können dieselbe Syntax verwenden, um die gesamte Datei mit Anmerkungen zu versehen . Platzieren Sie dazu die Annotation mit der Zieldatei auf der obersten Ebene der Datei, vor der Paketanweisung oder vor allen Importen (wenn sich die Datei im Standardpaket befindet):

annotation class Suspendable

val f = @Suspendable { Fiber.sleep(10) }
Nach dem Login kopieren

Wenn Sie mehrere Anmerkungen für dasselbe Ziel haben, können Sie doppelte Ziele vermeiden, indem Sie nach dem Ziel eckige Klammern hinzufügen und alle Anmerkungen in die Klammern einfügen:

< Die vollständige Liste von Unterstützte Nutzungsziele für 🎜>

sind:


class Example(@field:Ann val foo,  // 标注 Java 字段
       @get:Ann val bar,   // 标注 Java getter
       @param:Ann val quux)  // 标注 Java 构造函数参数
Nach dem Login kopieren
Datei


Eigenschaft (mit Anmerkung für dieses Ziel, unsichtbar für Java)

@file:JvmName("Foo")

package org.jetbrains.demo
Nach dem Login kopieren

field


class Example {
   @set:[Inject VisibleForTesting]
   var collaborator: Collaborator
}
Nach dem Login kopieren
get (property getter)

  1. set (property setter)

  2. receiver (Empfängerparameter der Erweiterungsfunktion oder -eigenschaft)

  3. param (Konstruktorparameter)

  4. setparam ( Eigenschaftssetter-Parameter)

  5. delegate (Feld für eine Delegateneigenschaft zum Speichern ihrer Delegateninstanz)

  6. Zum Kommentieren des Empfängerparameters von Als Erweiterungsfunktion verwenden Sie die folgende Syntax:

  7. Wenn Sie kein Ziel angeben, basiert es auf der @Target-Annotation der verwendeten Annotation Ihr Ziel. Wenn mehrere anwendbare Ziele vorhanden sind, wird das erste anwendbare Ziel aus der folgenden Liste verwendet:
    • param

    • property

    • field

    Java 注解

    Java 注解与 Kotlin 100% 兼容:


    import org.junit.Test
    import org.junit.Assert.*
    import org.junit.Rule
    import org.junit.rules.*
    
    class Tests {
      // 将 @Rule 注解应用于属性 getter
      @get:Rule val tempFolder = TemporaryFolder()
    
      @Test fun simple() {
        val f = tempFolder.newFile()
        assertEquals(42, getTheAnswer())
      }
    }
    Nach dem Login kopieren

    因为 Java 编写的注解没有定义参数顺序,所以不能使用常规函数调用 语法来传递参数。相反,你需要使用命名参数语法。


    // Java
    public @interface Ann {
      int intValue();
      String stringValue();
    }
    // Kotlin
    @Ann(intValue = 1, stringValue = "abc") class C
    Nach dem Login kopieren

    就像在 Java 中一样,一个特殊的情况是 value 参数;它的值无需显式名称指定。


    // Java
    public @interface AnnWithValue {
      String value();
    }
    // Kotlin
    @AnnWithValue("abc") class C
    Nach dem Login kopieren

    如果 Java 中的 value 参数具有数组类型,它会成为 Kotlin 中的一个 vararg 参数:


    // Java
    public @interface AnnWithArrayValue {
      String[] value();
    }
    // Kotlin
    @AnnWithArrayValue("abc", "foo", "bar") class C
    Nach dem Login kopieren

    对于具有数组类型的其他参数,你需要显式使用 arrayOf:


    // Java
    public @interface AnnWithArrayMethod {
      String[] names();
    }
    // Kotlin
    @AnnWithArrayMethod(names = arrayOf("abc", "foo", "bar")) class C
    Nach dem Login kopieren

    注解实例的值会作为属性暴露给 Kotlin 代码。


    // Java
    public @interface Ann {
      int value();
    }
    // Kotlin
    fun foo(ann: Ann) {
      val i = ann.value
    }
    Nach dem Login kopieren

    Das obige ist der detaillierte Inhalt vonTeilen eines Beispiel-Tutorials für die Kotlin-Annotationsklasse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Tutorial zur Verwendung von Dewu Tutorial zur Verwendung von Dewu Mar 21, 2024 pm 01:40 PM

Dewu APP ist derzeit eine sehr beliebte Marken-Shopping-Software, aber die meisten Benutzer wissen nicht, wie sie die Funktionen in Dewu APP verwenden. Nachfolgend finden Sie eine Zusammenfassung des Dewuduo-Tutorials Interessierte Benutzer können vorbeikommen und einen Blick darauf werfen! Tutorial zur Verwendung von Dewu [20.03.2024] Verwendung des Dewu-Ratenkaufs [20.03.2024] So erhalten Sie Dewu-Gutscheine [20.03.2024] So finden Sie den manuellen Kundendienst von Dewu [2024-03- 20] So überprüfen Sie den Abholcode von Dewu [20.03.2024] Wo Sie Dewu kaufen können [20.03.2024] So eröffnen Sie Dewu VIP [20.03.2024] So beantragen Sie die Rückgabe oder den Umtausch von Dewu

So teilen Sie NetEase Cloud Music mit WeChat Moments_Tutorial zum Teilen von NetEase Cloud Music mit WeChat Moments So teilen Sie NetEase Cloud Music mit WeChat Moments_Tutorial zum Teilen von NetEase Cloud Music mit WeChat Moments Mar 25, 2024 am 11:41 AM

1. Zuerst rufen wir NetEase Cloud Music auf und klicken dann auf die Software-Homepage-Oberfläche, um die Song-Wiedergabeoberfläche aufzurufen. 2. Suchen Sie dann in der Song-Wiedergabeoberfläche die Schaltfläche für die Freigabefunktion oben rechts, wie im roten Feld in der Abbildung unten gezeigt, klicken Sie, um den Freigabekanal im Freigabekanal auszuwählen, und klicken Sie auf die Option „Teilen für“. Wählen Sie unten den ersten Eintrag „WeChat Moments“ aus, mit dem Sie Inhalte für WeChat Moments freigeben können.

Im Sommer müssen Sie unbedingt versuchen, einen Regenbogen zu schießen Im Sommer müssen Sie unbedingt versuchen, einen Regenbogen zu schießen Jul 21, 2024 pm 05:16 PM

Nach dem Regen im Sommer können Sie oft ein wunderschönes und magisches besonderes Wetterbild sehen – den Regenbogen. Dies ist auch eine seltene Szene, die man in der Fotografie antreffen kann, und sie ist sehr fotogen. Für das Erscheinen eines Regenbogens gibt es mehrere Bedingungen: Erstens sind genügend Wassertröpfchen in der Luft und zweitens scheint die Sonne in einem niedrigeren Winkel. Daher ist es am einfachsten, einen Regenbogen am Nachmittag zu sehen, nachdem der Regen nachgelassen hat. Allerdings wird die Bildung eines Regenbogens stark von Wetter, Licht und anderen Bedingungen beeinflusst, sodass sie im Allgemeinen nur von kurzer Dauer ist und die beste Betrachtungs- und Aufnahmezeit sogar noch kürzer ist. Wenn Sie also auf einen Regenbogen stoßen, wie können Sie ihn dann richtig aufzeichnen und qualitativ hochwertige Fotos machen? 1. Suchen Sie nach Regenbögen. Zusätzlich zu den oben genannten Bedingungen erscheinen Regenbögen normalerweise in Richtung des Sonnenlichts, das heißt, wenn die Sonne von Westen nach Osten scheint, ist es wahrscheinlicher, dass Regenbögen im Osten erscheinen.

So teilen Sie Dateien mit Freunden auf Baidu Netdisk So teilen Sie Dateien mit Freunden auf Baidu Netdisk Mar 25, 2024 pm 06:52 PM

Vor kurzem hat der Baidu Netdisk Android-Client eine neue Version 8.0.0 eingeführt. Diese Version bringt nicht nur viele Änderungen, sondern fügt auch viele praktische Funktionen hinzu. Am auffälligsten ist unter anderem die Verbesserung der Ordnerfreigabefunktion. Jetzt können Benutzer ganz einfach Freunde einladen, beizutreten und wichtige Dateien im Beruf und im Privatleben zu teilen, was eine bequemere Zusammenarbeit und gemeinsame Nutzung ermöglicht. Wie teilen Sie die Dateien, die Sie benötigen, mit Ihren Freunden? Ich hoffe, dass Ihnen der Herausgeber dieser Website weiterhelfen kann. 1) Öffnen Sie die Baidu Cloud APP, wählen Sie zuerst den entsprechenden Ordner auf der Startseite aus und klicken Sie dann auf das Symbol [...] in der oberen rechten Ecke der Benutzeroberfläche (wie unten gezeigt). 2) Klicken Sie dann auf [+]. Klicken Sie auf die Spalte „Gemeinsame Mitglieder“ 】 und markieren Sie abschließend alle

Wie werden Annotationen für Testmethoden im JUnit-Framework verwendet? Wie werden Annotationen für Testmethoden im JUnit-Framework verwendet? May 06, 2024 pm 05:33 PM

Anmerkungen im JUnit-Framework werden zum Deklarieren und Konfigurieren von Testmethoden verwendet. Zu den Hauptanmerkungen gehören: @Test (Deklaration von Testmethoden), @Before (Methodenausführung, bevor die Testmethode ausgeführt wird), @After (Methodenausführung, nachdem die Testmethode ausgeführt wird). ausgeführt wird), @ BeforeClass (Methode, die ausgeführt wird, bevor alle Testmethoden ausgeführt werden), @AfterClass (Methode, die ausgeführt wird, nachdem alle Testmethoden ausgeführt werden). Diese Anmerkungen helfen dabei, den Testcode zu organisieren und zu vereinfachen und die Zuverlässigkeit des Testcodes zu verbessern durch die Bereitstellung klarer Absichten und Konfigurationen.

Anleitung zum Deaktivieren des Zahlungstons auf WeChat Anleitung zum Deaktivieren des Zahlungstons auf WeChat Mar 26, 2024 am 08:30 AM

1. Öffnen Sie zunächst WeChat. 2. Klicken Sie oben rechts auf [+]. 3. Klicken Sie auf den QR-Code, um die Zahlung einzuziehen. 4. Klicken Sie auf die drei kleinen Punkte in der oberen rechten Ecke. 5. Klicken Sie auf , um die Spracherinnerung für den Zahlungseingang zu schließen.

Experten unterrichten Sie! Der richtige Weg, lange Bilder auf Huawei-Handys zu schneiden Experten unterrichten Sie! Der richtige Weg, lange Bilder auf Huawei-Handys zu schneiden Mar 22, 2024 pm 12:21 PM

Mit der kontinuierlichen Weiterentwicklung von Smartphones sind die Funktionen von Mobiltelefonen immer leistungsfähiger geworden, darunter die Funktion zum Aufnehmen langer Bilder zu einer der wichtigen Funktionen, die viele Benutzer im täglichen Leben nutzen. Lange Screenshots können Benutzern dabei helfen, eine lange Webseite, Gesprächsaufzeichnung oder ein Bild gleichzeitig zu speichern, um sie einfacher anzeigen und teilen zu können. Unter vielen Mobiltelefonmarken gehören auch Huawei-Handys zu den Marken, die von den Nutzern sehr geschätzt werden, und auch ihre Funktion zum Zuschneiden langer Bilder wird hoch gelobt. In diesem Artikel erfahren Sie, wie Sie lange Bilder mit Huawei-Mobiltelefonen richtig aufnehmen, und erhalten einige Expertentipps, die Ihnen dabei helfen, Huawei-Mobiltelefone besser zu nutzen.

Wie steuern Anmerkungen in der Jackson-Bibliothek die JSON-Serialisierung und -Deserialisierung? Wie steuern Anmerkungen in der Jackson-Bibliothek die JSON-Serialisierung und -Deserialisierung? May 06, 2024 pm 10:09 PM

Anmerkungen in der Jackson-Bibliothek steuern die JSON-Serialisierung und -Deserialisierung: Serialisierung: @JsonIgnore: Ignorieren Sie die Eigenschaft @JsonProperty: Geben Sie den Namen an @JsonGetter: Verwenden Sie die get-Methode @JsonSetter: Verwenden Sie die set-Methode Deserialisierung: @JsonIgnoreProperties: Ignorieren Sie die Eigenschaft @ JsonProperty: Geben Sie den Namen @JsonCreator an: Verwenden Sie den Konstruktor @JsonDeserialize: Benutzerdefinierte Logik

See all articles