example - my icon java
¿Cuál es la diferencia entre ''&'' y '','' en los genéricos de Java? (1)
<T extends MyClass & Serializable>
Esto afirma que el parámetro de tipo único T debe extender MyClass y debe ser Serializable .
<T extends MyClass , Serializable>
Esto declara dos parámetros de tipo, uno llamado T (que debe extender MyClass ) y otro llamado Serializable (que oculta java.io.Serializable - de esto es probablemente de lo que trataba la advertencia).
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'' ( & ) así:
<T extends MyClass & Serializable>
Reemplacé el & con , (por error y aún 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;
}