Grazie mille per l'aiuto
ho corretto così:
codice:
    public Spesa(ArrayList<Prodotto> s) //simulazione passaggio per valore
    {
        Iterator<Prodotto> iter=s.iterator();
        Prodotto aus;
        for(Prodotto p:s)
        {
          aus=iter.next();
          this.ProdottiAcquistatati.add(new Prodotto(aus.getPeso(),
                    aus.getPrezzoEtto(),aus.getScontoPercentuale()));
        }
    }
Così credo vada bene giusto??