[Kotlin] Behandeln Sie Java-Felder sicher aus Kotlin mit NotNull (NonNull) / Nullable-Annotationen. [Java]

Entschuldigung und Korrektur

Zum Zeitpunkt der Veröffentlichung dieses Artikels wurde angegeben, dass die Annotationen "NonNull" / "Nullable" in "org.springframework.lang" ebenfalls funktionieren würden, dies war jedoch falsch. Wenn diese Anmerkungen verwendet wurden, änderte sich die ergänzende Notation in der IDE, aber zum Zeitpunkt der Kompilierung wurde nur eine Warnung ausgegeben.

Wir entschuldigen uns für die Korrektur.

Vorwort

Durch die Verwendung von Anmerkungen wie "NotNull" / "Nullable" in "org.jetbrains.annotations" können Sie "Java" -Felder von "Kotlin" bis "Kotlin" verarbeiten.

Es sind auch andere Anmerkungen verfügbar, siehe unten.

Weise

Alles was Sie tun müssen, ist es wie folgt zu geben.

import org.jetbrains.annotations.NotNull;

public class Sample {
    private String field;

    @NotNull
    public String getField() {
        return field;
    }

    public void setField(String field) {
        this.field = field;
    }
}

Was passiert, wenn du es gibst?

Vor dem Gewähren wird es als "String!" - Typ (Plattformtyp) auf "Kotlin" behandelt (siehe Abbildung unten). スクリーンショット 2019-10-24 21.30.17.png

Nach dem Gewähren können Sie sehen, dass es als "String" -Typ behandelt wird. スクリーンショット 2019-10-24 21.31.27.png

Sie können es auch als "String?" - Typ behandeln, indem Sie die Anmerkung wie unten gezeigt in "Nullable" ändern.

Wechseln Sie zu Nullable


- import org.jetbrains.annotations.NotNull;
+ import org.jetbrains.annotations.Nullable;
- @NotNull
+ @Nullable
public String getField() {

スクリーンショット 2019-10-24 21.35.39.png

Ergänzung

Wenn Sie ein POJO-ähnliches Objekt mit Anmerkungen versehen, ist es besser, es dem Getter zu geben. Wie Sie im Bild sehen können, werden Sie wütend auf "Initialisieren", wenn Sie es im Feld schütteln. スクリーンショット 2019-10-24 22.00.55.png

Bedeutung

Wenn Sie "Kotlin" in ein "Java" -Projekt einführen oder das "Java" -Framework von "Kotlin" verwenden, verhält es sich häufig wie "Objekt mit wertlosem Konstruktor initialisieren -> Injizieren Sie jeden Wert mit Setter". Es kann Fälle geben.

Wenn Sie in einem solchen Fall versuchen, das Zielobjekt in "Kotlin" zu schreiben, müssen Sie viele Anstrengungen unternehmen und können sagen: "Ist es sinnvoll, in" Kotlin "zu schreiben?" Wenn Sie ein vorhandenes Java-Objekt haben und alles einzeln neu schreiben müssen, ist der Aufwand nicht dumm. Es ist eine gute Idee, ein Dienstprogramm zu erstellen, das von Anfang an der Klasse "Data" zugeordnet werden kann. Die anfänglichen Kosten sind jedoch höher als beim Umschreiben.

Ich denke, es wäre klüger, den Getter nur zu kommentieren, wenn Sie das tun möchten (es sei denn, Sie möchten natürlich alles voll machen, Kotlin, aber das Verhalten, das Sie erreichen können, ist das gleiche. Wenn ja, denke ich, ist es in Ordnung, es separat in "Java" zu schreiben.

Recommended Posts

[Kotlin] Behandeln Sie Java-Felder sicher aus Kotlin mit NotNull (NonNull) / Nullable-Annotationen. [Java]
Rufen Sie eine Methode mit Kotlins Rückrufblock von Java aus auf
[Java] Zeichensatz mit Apathce Tika abrufen / String von Zeichensatz initialisieren [Kotlin]
Android: Umgang mit "Java-Version von '10 .0.1 'konnte nicht ermittelt werden"