2017-07-16 4 views
0

Java JList est maintenant paramétrées, et le paramétrage a été introduit en Java 1.7: type JList does not take parameter type <String>Pourquoi le paramétrage JList n'a-t-il pas rompu la compatibilité Java?

Pourquoi pas cette paramétrisation classe la compatibilité de rupture avec les applications qui ont été compilés avec un compilateur Java 1.6, mais sont en cours d'exécution sur Java 1.7 JRE ? Je supposerais naturellement que si la quantité de paramètres de type qu'une classe prend a été modifiée, la compatibilité serait rompue.

question similaire (a probablement la même réponse): invokeAll de ExecutorService a en Java 1.5 Collection < appelable <T> >, mais maintenant il faut Collection <? extends Callable <T> >. Pourquoi cela ne rompt-il pas la compatibilité binaire?

connexes: What is binary compatibility in Java?

+0

Bienvenue à l'amusement de type effacement. –

+3

En quoi est-ce différent de ArrayList, et de tous les autres anciens types qui sont maintenant paramétrés? –

Répondre

2

JLS Sec 13.4.5 Citation:

Ajout ou suppression d'un paramètre de type d'une classe n'a pas, en elle-même, ont des implications pour la compatibilité binaire.