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