Mientras leía el tutorial oficial de Java sobre genéricos, descubrí que puede restringir el argumento de tipo (en este caso es T) para extender una clase y / o más interfaces con el operador 'y' ( &) de esta manera:
<T extends MyClass & Serializable>
Reemplacé el &con ,(por error y todavía funciona, con una advertencia menor).
Mi pregunta es, ¿hay alguna diferencia entre estos dos?
<T extends MyClass & Serializable>
<T extends MyClass , Serializable> // here is with comma
Y el método de ejemplo:
static <T extends MyClass & Serializable> ArrayList<T> fromArrayToCollection(T[] a) {
ArrayList<T> arr = new ArrayList<T>();
for (T o : a) {
arr.add(o); // Correct
}
return arr;
}

Respuestas:
Esto afirma que el parámetro de tipo único
Tdebe extenderseMyClassy debe serSerializable.Esto declara dos parámetros de tipo, uno llamado
T(que debe extenderseMyClass) y otro llamadoSerializable(que se ocultajava.io.Serializable; probablemente de esto se trataba la advertencia).fuente