Récemment, j'ai rencontré un problème avec une fonction qui devait renvoyer un tableau de I
sous la forme de toutes les valeurs de l'enum E
, avec E
la mise en œuvre de l'interface I
Avec chaque code qui m'est venu à l'esprit, le compilateur s'est plaint d'une incompatibilité de type :
Error:(x, x) Kotlin: Type mismatch: inferred type is Array<E> but Array<I> was expected
Un exemple minimal :
interface I {}
enum class E: I {
A, B, C;
}
fun getMoreInterfaces(): Array<I> {
return E.values()
}
Cela se produit lorsque l'on essaie d'assigner E.values()
à une variable de type Array<I>
Je suis certain que cela devrait être possible puisque E
met en œuvre I
.
Une autre chose que j'ai constatée lors de mes tests est que le système fonctionne parfaitement lorsqu'il est utilisé de cette manière :
interface I {}
enum class E: I {
A, B, C;
}
fun getMoreInterfaces(): Array<I> {
return arrayOf(E.A, E.B, E.C)
}
J'ai fait beaucoup de recherches sur ce sujet, mais sans succès (peut-être ai-je choisi la mauvaise manière de le décrire ?)