[Kotlin] Gérez les champs Java de Kotlin en toute sécurité avec les annotations NotNull (NonNull) / Nullable [Java]

Excuses et correction

Au moment de la publication de cet article, j'ai mentionné que les annotations «NonNull» / «Nullable» dans «org.springframework.lang» fonctionnaient également, mais c'était incorrect. Lorsque ces annotations ont été utilisées, la notation complémentaire sur l'EDI a changé, mais seul un avertissement a été émis au moment de la compilation.

Nous nous excusons pour la correction.

Préface

En utilisant des annotations telles que «NotNull» / «Nullable» dans «org.jetbrains.annotations», vous pouvez gérer les champs «Java» de «Kotlin» à «Kotlin».

Voir ci-dessous pour d'autres annotations qui peuvent également être utilisées.

manière

Tout ce que vous avez à faire est de le donner comme suit.

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;
    }
}

Que se passe-t-il lorsque vous le donnez

Avant d'accorder, il est traité comme String! Type (type de plate-forme) sur Kotlin comme indiqué dans l'image ci-dessous. スクリーンショット 2019-10-24 21.30.17.png

Après avoir accordé, vous pouvez voir qu'il est traité comme un type String. スクリーンショット 2019-10-24 21.31.27.png

Vous pouvez également le traiter comme un type «Chaîne?» En modifiant l'annotation en «Nullable» comme indiqué ci-dessous.

Changer en Nullable


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

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

Supplément

Lors de l'annotation d'un objet de type POJO, il est préférable de le donner au getter. Comme vous pouvez le voir sur l'image, si vous la secouez sur le terrain, vous serez en colère contre "Initialiser". スクリーンショット 2019-10-24 22.00.55.png

importance

Lors de l'introduction de Kotlin dans un projet Java ou de l'utilisation du framework Java de Kotlin, il se comporte souvent comme "Initialiser un objet avec un constructeur sans valeur-> Injecter chaque valeur avec un setter". Il peut y avoir des cas.

Dans un tel cas, si vous essayez d'écrire l'objet cible dans Kotlin, vous devez faire beaucoup d'efforts, et vous pouvez dire:" Est-ce significatif d'écrire dans Kotlin?" Si vous avez un objet Java existant et que vous avez besoin de tout réécrire un par un, l'effort n'est pas stupide. C'est une bonne idée de créer un utilitaire qui peut être mappé à la classe Data depuis le début, mais le coût initial sera plus élevé que la réécriture.

Je pense qu'il serait plus intelligent d'annoter simplement le getter si vous voulez faire cela (à moins que vous ne vouliez que tout soit complet Kotlin, bien sûr, mais le comportement que vous pouvez obtenir est le même. Si c'est le cas, je pense que vous pouvez l'écrire séparément en Java).

Recommended Posts

[Kotlin] Gérez les champs Java de Kotlin en toute sécurité avec les annotations NotNull (NonNull) / Nullable [Java]
Appeler une méthode avec le bloc de rappel de Kotlin depuis Java
[Java] Obtenir le jeu de caractères avec Apathce Tika / Initialiser la chaîne à partir du jeu de caractères [Kotlin]
Android: Comment gérer "Impossible de déterminer la version Java à partir de '10 .0.1 '"