Sto studiando le asserzioni ma ho un dubbio su questo frammento di codice:

codice:
public class PortaMonete
{ 
    private static final int DIMENSIONE = 10;
    
    private final Moneta monete [] = new Moneta [DIMENSIONE];
    
    
    public PortaMonete(int... valori)
    {
        assert monete.length==DIMENSIONE;  

        try
        {
            int numeroMonete = valori.length;
            for(int i=0; i<numeroMonete; i++)
            {
                if (i>=10)
                {
                    throw new PortaMonetePienoException();
                }
                monete[i] = new Moneta(valori[i]);
            }
        }
        catch(PortaMonetePienoException exc)
        {
            System.out.println("problema: " + exc.getMessage() + "\n");
        }
        catch(NullPointerException exc)
        {
            System.out.println("Portamonete creato vuoto");
        }
        System.out.println("\n");
        
        assert monete.length==DIMENSIONE; 
    }

...

}
In questo caso sono state utilizzate una pre-condizione e una post-condizione che permettono di verificare se la lunghezza dell'array rimane quella iniziale.
Io allora mi chiedo, che senso ha utilizzare queste due asserzioni dal momento in cui sia l'array che DIMENSIONE sono dichiarati final (quindi non potrò avere un metodo set)?