Existe-t-il un moyen de forcer le compilateur à vérifier si j'utilise les mêmes annotations dans la méthode enfant que dans la méthode parent. Si j'utilise @NotNull
et String
tout fonctionne comme prévu.@Override ne force pas l'utilisation d'annotation enum dans les méthodes surchargées
public static final int FIRST_ENUM = 0;
public static final int SECOND_ENUM = 1;
@IntDef(value = {
FIRST_ENUM,
SECOND_ENUM
})
@Retention(RetentionPolicy.SOURCE)
public @interface MyEnum {
}
class Parent {
public void method(@MyEnum int a) {
}
}
class Child extends Parent {
@Override
public void method(int a) { // This is valid otherwise there is no @MyEnum
}
}
Ce code est valide bien que je ne remplace pas toutes les annotations.
Merci pour votre suggestion, mais j'ai besoin de vérifier les annotations dans Android Studio et Android Studio certains vérifient automatiquement. par exemple 'int sth = 10;' '@MyEnum int num = sth;/* sans erreur (mauvais) */'' num = sth;/* erreur affichée (ok) */'Peut-être que toutes les vérifications ne sont pas encore implémentées ... – mmrmartin
Vous pouvez soumettre un rapport de bogue à l'équipe Android Studio et attendre qu'ils le résolvent. Jusque-là, vous pouvez utiliser un outil tiers comme le [Enum Checker] (https://checkerframework.org/manual/#fenum-checker). – mernst