Quelle est la différence entre “&” et “,” dans les génériques Java?

En lisant le tutoriel officiel Java sur les génériques, j’ai constaté que vous pouvez restreindre l’argument de type (dans ce cas-ci, T ) pour étendre une classe et / ou plusieurs interfaces avec l’opérateur ‘et’ ( & ) comme ceci:

  

J’ai remplacé le & with , (par erreur et fonctionne toujours, avec un avertissement mineur).

Ma question est la suivante: y a-t-il une différence entre les deux:

   // here is with comma 

Et la méthode d’exemple:

 static  ArrayList fromArrayToCollection(T[] a) { ArrayList arr = new ArrayList(); for (T o : a) { arr.add(o); // Correct } return arr; } 

  

Cela affirme que le paramètre de type unique T doit étendre MyClass et doit être Serializable .

  

Cela déclare deux parameters de type, l’un appelé T (qui doit étendre MyClass ) et l’autre appelé Serializable (qui masque java.io.Serializable – c’est probablement ce dont il s’agissait).