Estoy leyendo el tutorial de Java sobre comodines en genéricos. En el siguiente código:Cómo funcionan los comodines en Java
void printCollection(Collection<Object> c) {
for (Object e : c) {
System.out.println(e);
}
}
hace esto significa la colección c
toma tipo object
como sus elementos, y no podemos llamar c.add("apple")
, porque "manzana" es una cadena y el bucle for toma ningún object
elementos de la colección c
?
Pero no entiendo el siguiente código,
void printCollection(Collection<?> c) {
for (Object e : c) {
System.out.println(e);
}
}
Este código utiliza comodines, que significa "una colección cuyo tipo de elemento concuerda con algo." ¿Esto significa que podemos agregarle cualquier tipo de objeto, como c.add("string");
, c.add(1);
y c.add(new apple());
? y el bucle for toma cualquier objeto e
de la colección c
, si c
no es un tipo object
, decimos que los elementos c
son Entero. ¿Funciona este código? ¿Esto significa que debería ser lanzado?
No son equivalentes cuando se trata de agregar cosas a ellos. –