web-dev-qa-db-fra.com

convertir de booléen en octet en java

Je dois définir la valeur d'octet en tant que paramètre de méthode. J'ai la variable booléenne isGenerated, qui détermine la logique à exécuter dans cette méthode. Mais je peux passer directement comme paramètre d'octet booléen, ce n'est pas autorisé et ne peut pas être converti en Java. Donc, la solution que j'ai maintenant ressemble à ceci:

myObj.setIsVisible(isGenerated ? (byte)1 : (byte)0);

Mais cela me semble étrange. Peut-être qu'une meilleure solution existe pour faire cela?

14
Martin

votre solution est correcte.

si vous le souhaitez, vous pouvez éviter une distribution en procédant de la manière suivante:

myObj.setIsVisible((byte) (isGenerated ? 1 : 0 ));

en outre, vous devez envisager l'une des modifications suivantes de votre implémentation:

  • changez votre méthode pour quelque chose comme setVisiblityState (état d'octet) si vous devez prendre en compte plus de 2 états possibles

  • changez votre méthode en setIsVisible (valeur booléenne) si votre méthode fait ce à quoi elle ressemble

16
PrR3

Vous pouvez utiliser cette solution. Je l'ai trouvé sur this page très utile

boolean vIn = true;
byte vOut = (byte)(vIn?1:0);
4
Federico Traiman

Ce n'est pas étrange. C’est correct… L’étonnant, c’est que vous devez transformer une valeur booléenne typée en octet non explicable. Cependant, nous devons parfois procéder de la sorte lorsque nous travaillons avec des API héritées. 

Si vous voulez économiser de la mémoire, vous pouvez utiliser 1 bit au lieu d'octet. Vous pouvez ainsi regrouper plusieurs indicateurs booléens tout en utilisant bit pour chaque valeur booléenne. Mais cette technique est pertinente pour des quantités énormes de données uniquement lorsque la sauvegarde de plusieurs octets peut être importante. 

0
AlexR