Salut à tous,
Comme l'indiquent les spécifications du language, les champs d'une interface (forcément static et final) doivent être initialisés dans l'interface.
Est-il possible de définir un champ d'un type générique dans une interface? Celui-ci ne serait alors initialisé qu'a la création du premier objet utilisant un type définit... (Je n'ai trouvé aucune documentation laissant supposer que l'on peut créer des champs de type générique dans une interface... Je dois demander l'impossible!!!)
Pour clarifier tout ça, voici un exemple:
Ce que je veux c'est que la valeur de mon champ static puisse être d'un type qui n'est pas connu à la compilation de l'interface.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 interface monInterface <T> { T monChampStatic; // Aucune solution pour faire accepter cette ligne au compilateur? } class maclasseA implements monInterface<Integer> { static final Integer monChampStatic = 5; } class maclasseB implements monInterface<Double> { static final Double monChampStatic = 2.8; }
Merci d'avance...
Edit:
Il semble bien que ce soit impossible (c'est ce que dit Oracle: Cannot Declare Static Fields Whose Types are Type Parameters).
J'ai contourné le problème en ajoutant à mon interface une fonction qui retourne la valeur que je voulais attribuer à mon champ static.
Partager