2017-03-01 1 views
0

J'ai une classe où j'ai deux propriétés de type booléen. La condition est à la fois ne doit pas être la même, c'est-à-dire si une propriété contient une valeur fausse, alors véritable valeur et vice versa.I je utilise la dépendance net.sf.oval pour validations.How puis-je mettre en œuvre ce qui précède dit scenario.Is possible grâceRestreindre les propriétés d'une classe POJO pour conserver la même valeur

ma classe

public class Modality { 

    private boolean fp; 
    private boolean otp; 

    public boolean isFp() { 
     return fp; 
    } 

    public void setFp(boolean fp) { 
     this.fp = fp; 
    } 

    public boolean isOtp() { 
     return otp; 
    } 

    public void setOtp(boolean otp) { 
     this.otp = otp; 
    } 

    @Override 
    public String toString() { 
     return "Modality [fp=" + fp + ", otp=" + otp + "]"; 
    } 

} 
+0

Quel est le point d'avoir deux champs, dans ce cas? Ne pourriez-vous pas juste avoir des getters et setterd jouer avec le même champ? –

+0

@ Laurent G Je suis d'accord avec vous, nous ne pouvons avoir que des champs. Mais on m'a dit d'utiliser deux champs, alors que faire? –

+0

Hum, exercice sur ovale. Comme l'a dit @JureKolenko, utilisez '@ NotEqualField' et ajoutez un constructeur qui vous permet de respecter l'invariant. –

Répondre

0

Essayez ceci:

public void setOtp(boolean otp) { 
    this.otp = otp; 
    this.fp = !otp; 
} 

public void setFp(boolean fp) { 
    this.fp = fp; 
    this.otp = !fp; 
} 
+0

merci pour votre réponse, mais je dois empêcher le client d'envoyer la même valeur dans le json. Je ne changerai rien –

0

Utilisez l'annotation @NotEqualToField?

public class Modality { 

    private boolean fp; 
    @NotEqualToField("fp") 
    private boolean otp; 

} 
+0

mais quand nous créons un objet de modalité, les propriétés de cette classe seront initialisées avec la valeur par défaut qui est fausse. Ensuite, ce seront les mêmes valeurs pour les propriétés. N'est-ce pas? –