new icon example borderfactory java generics

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; }