Ok Question sur les génériques javas, itérable, et pour chaque boucle. Le problème étant que, si je déclare la classe 'Test' non typée, je perds toutes les informations génériques sur toutes mes fonctions et pour-chacune ne les aime pas du tout.Java classes génériques non typées, supprimant leurs fonctions types génériques
Exemple
public class Test<T> implements Iterable<Integer>{
public Test() {}
public Iterator<Integer> iterator() {return null;}
public static void main(String[] args) {
Test t = new Test();
//Good,
//its returning an Iterator<object> but it automatically changes to Iterator<Integer>
Iterator<Integer> it = t.iterator();
//Bad
//incompatable types, required Integer, found Object
for(Integer i : t){
}
}Untyped generic classes losing
}
Lorsque 'Test t' est non typé, le «itérateur() renvoyée par la fonction de l'itérateur 'au lieu d'un '< itérateur Entier>'.
Je ne suis pas exactement sûr de la raison derrière cela, je sais qu'un correctif pour cela est juste d'utiliser un caractère générique sur 'Test <? > t = nouveau test() '. Cependant, ceci est une solution moins qu'idéale.
Est-il possible d'éditer uniquement la déclaration de classe et ses fonctions et de faire en sorte que la boucle de chaque boucle ne soit pas typée?
Si vous utilisez des types premières, génériques sur les méthodes seront ignorées (voir dernier opus Java Puzzlers). N'utilisez pas de types bruts. Les versions récentes de javac devraient donner des avertissements. –
Merci pour le lien vidéo, des choses très intéressantes dans leur. Le raisonnement derrière le > fait sence maintenant. – user542481