Veuillez consulter le lien ci-dessous car une personne détaillée l'a déjà écrit. Gestion des indicateurs par opération bit La gestion des indicateurs de jeu est efficace et simple grâce à l'arithmétique binaire
Je veux parler.
int
//Définition.
//Vous pouvez l'écrire librement, mais si vous l'écrivez par opération de décalage, vous pouvez voir la valeur à définir ensuite en un coup d'œil.
final static int COM_LOLI = 1 << 0;
final static int COM_MOM = 1 << 1;
final static int COM_SIS = 1 << 2;
/**
* next flag:0x0008
* <p>
*Comment écrire des commentaires que j'ai vus dans le Framework Android.
*Si vous écrivez la valeur à définir ensuite comme ça, c'est beau.
*/
//Créer.
int flags = COM_LOLI | COM_SIS;
//Drapeau.
flags |= COM_MOM;
//Drapeau vers le bas.
flags &= ~COM_SIS;
//Vérifiez le drapeau.
boolean isOn = (flags & COM_LOLI) != 0;
//Au moins 101010 lors de la sortie des journaux...Sortir au format.
Integer.toBinaryString(flags);
/**
*La création d'une méthode de sortie de journal est difficile à gérer.
*/
static String decodeFlags(final int flags) {
StringBuilder builder = new StringBuilder();
if ((flags & COM_LOLI) != 0) {
builder.append("LOLI").append(" ");
}
if ((flags & COM_MOM) != 0) {
builder.append("MOM").append(" ");
}
if ((flags & COM_SIS) != 0) {
builder.append("SIS").append(" ");
}
return builder.toString();
}
BitSet
//Il existe également un substitut à BitSet.
BitSet bitSet = new BitSet();
//Drapeau.
bitSet.set(2);
//Drapeau vers le bas.
bitSet.clear(1);
//Vérifiez le drapeau.
boolean isOn = bitSet.get(3);
//Mais c'est une classe utilisée lors de l'exécution sérieuse d'opérations sur les bits
//C'est un peu difficile à utiliser comme drapeau.
//J'étais heureux s'il y avait toInteger ou toLong
//C'est peut-être parce que le tableau de bits de longueur variable qui est le but de la classe ne peut pas être garanti.
EnumSet
/**
*Définissez d'abord enum.
*/
enum Complex {
LOLI("Woooooooooooo"),
MOM("Maman!"),
SIS("Il y a 12 personnes!");
public final String cry;
Complex(final String cry) {
this.cry = cry;
}
}
//Créer.
EnumSet<Complex> flags = EnumSet.of(Complex.LOLI, Complex.SIS);
//Drapeau.
flags.add(Complex.MOM);
//Drapeau vers le bas.
flags.remove(Complex.SIS);
//Vérifiez le drapeau.
boolean isOn = flags.contains(Complex.SIS);
//Boucle sur tout l'élément
for (Complex complex : Complex.values()) {
Log.d("allCry", complex.cry);
}
//Pratique pour boucler ou faire pivoter avec uniquement l'élément actuel
for (Complex complex : flags) {
Log.d("limitedCry", complex.cry);
}
//Informations sur "ce qu'il faut faire si l'indicateur est activé"
//Très pratique car il peut être retiré immédiatement
À moins que vous n'ayez une raison de le mettre dans et hors de la base de données tel quel avec speed, memory save ou int, vous devriez utiliser EnumSet. En ce qui concerne la vitesse, EnumSet a également été écrit en Java efficace pour dire qu'il était assez rapide.
Aussi, le gars qui a défini la constante de l'indicateur int qui représente le même état dans * diverses classes * * dans une notation de base différente *, ** monsieur !! **
Recommended Posts