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.
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.
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;
}
}
Vor dem Gewähren wird es als "String!" - Typ (Plattformtyp) auf "Kotlin" behandelt (siehe Abbildung unten).
Nach dem Gewähren können Sie sehen, dass es als "String" -Typ behandelt wird.
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() {
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.
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