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;
}
5
@Doorknob está asumiendo que el OP está usando un teclado y el mismo teclado que está usando.
—
emory
@emory Creo que incluso esa es la dirección equivocada: el error no estaba en sus dedos sino en su cerebro. De manera similar a como si hubiera intentado usar 'incluir' en lugar de 'importar' en un archivo fuente de Java. Escribió mal "incluir" porque su cerebro le dijo que escribiera algo incorrecto, lo cual es posible por varias razones.
—
Nick Pickering
@Nicholas Pickering, ¡tiene razón! Para mí, no fue un error de escritura por el teclado, sino por el cerebro. Cuando escribe qué interfaces implementa una clase, las separa por comas.
—
Alin Ciocan