Hola de nuevo pedro,, y gracias por tu respuesta. Tengo que repasar las bases más a fondo (este parón no me ha sentado bien

) . Ahora que me doy cuenta del error tan básico que he cometido, esto es, confundir los métodos del tipo
EnvioDeProducto con los de un tipo
ArrayList es para hacérselo mirar pero es la desesperación lo que me lleva a no saber donde estoy porque esta clase
EnvioDeProductos original también me daba fallo en el método
iterator()...me harté de probar cosas y acabé liándola.
Clase EnvioDeProductos primaria:
import java.util.*;
public class EnvioDeProductos {
private List<Producto> listaEnvio;
public EnvioDeProductos () {
listaEnvio = new ArrayList<Producto>();
}
public void addProducto (Producto producto){
listaEnvio.add(producto);
}
public Producto getProducto (int pos) {
return listaEnvio.get(pos);
}
public int getSize (){
return listaEnvio.size();
}
public void mostrarDatos (EnvioDeProductos listaEnvio/**GRAN CAGADA**/) {
Iterator<Producto> it = listaEnvio.iterator();
while (it.hasNext()) {
System.out.println("El artículo " + it.next()+ " tiene las siguientes características:");
it.next().datosProducto(it.next().toString());
}
}
}
Me acabo de dar cuenta de mi verdadero error y edito el post para aclararme a mí mismo lo que he hecho. En el método para iterar he pusto como argumento (EnvioDeProducto listaEnvio) algo completamente equivocado y además totalmente innecesario. Gracias por hacérmelo ver.