Bonjour,

Je rencontre un problème pour remplacer une énumération par l'annotation inDef en Kotlin.
Si j'utilise une classe Java dans mon projet Kotlin, qui contient ceci:

Code :Sélectionner tout -Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
import androidx.annotation.IntDef;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
 
public class PseudoEnums {
    @IntDef({typeImpl.type1, typeImpl.type2, typeImpl.type3})
    @Retention(RetentionPolicy.SOURCE)
    public @interface typeImpl {
        int type1 = 0;
        int type2 = 1;
        int type3 = 2;
    }
}


Et que dans ma classe Kotlin j'utilise par exemple ceci:

Code :Sélectionner tout -Visualiser dans une fenêtre à part
1
2
    @PseudoEnums.typeImpl
    var arg  = PseudoEnums.typeImpl.type1


Alors tout fonctionne parfaitement: Je ne peux affecter à "arg" qu'une valeur de type "PseudoEnums.typeImpl", sinon j'ai une erreur de compilation: C'est exactement ce que je voulais.

Mais si je tente d'utiliser une syntaxe Kotlin en remplacement de ma classe Java, ça ne fonctionne plus: J'ai bien l'indication en laissant la souris sur "arg" qu'il est attendu une variable du type en question, mais je peux en fait taper n'importe quel Int c'est accepté sans erreur ni warning: Bref, c'est inopérant.
J'ai testé différentes méthodes trouvées sur le net, aucune n'a fonctionné.

Quelqu'un sait-il comment utiliser "IntDef" à partir de Kotlin, sans devoir utiliser une classe Java?

Merci et joyeux réveillons.
Claude