Domanda

ho bisogno di impostare una postcondizione che assicura a nulla di ritorno, se size_ è 0. Sulla base

 if(size_ == 0)
  return null;

Come posso fare che in jml? qualche idea? In seguito non funziona:

//@ ensures size_ == null ==> \return true;

grazie in anticipo

È stato utile?

Soluzione

Prova

//@ ensures size_ == null ==> \result == true;

Esempio:

//@ ensures size_ == null ==> \result == true;
public boolean sizeUndefined() {
    if (size_ == null)
        return true;

    return size_.length() > 0;
}

Si potrebbe anche semplicemente scrivere in questo modo:

//@ ensures size_ == null ==> \result;

Ecco la documentazione per \result :

  

3.2.14 \result
  Da una postcondizione normale o un bersaglio modifica di un metodo non nullo, l'identificatore speciale \ risultato è un'espressione specifica cui tipo è il tipo di ritorno del metodo. Denota il valore restituito dal metodo. \ Risultato è consentito solo all'interno di un pragma accerta, also_ensures, modifica o also_modifies che modifica la dichiarazione di un metodo non nullo.

Altri suggerimenti

Prima di tutto: che tipo è size_, Object o primitive(int)

In secondo luogo, ciò che il tipo di ritorno del metodo? Object o primitive(boolean)?

Non si può confrontare un tipo primitivo di null, o null ritorno in cui si suppone che un tipo primitivo da restituire. Se assumiamo size_ è int e il ritorno è boolean poi la post-condizione sarebbe

//@ ensures size_ == 0 ==> \result;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top