L'utilisation correcte de masque de bits?

héhé,
juste une question à propos des masques de bits. Je pense que je sais maintenant ce qu'ils sont et d'où ils peuvent être utilisés.
Je veux stocker des autorisations spécifiques comme la construction, de PAUSE et d'INTERAGIR et peut-être plus pour des groupes spécifiques. Le code ci-dessous devrait le faire, mais je ne suis pas très sûr de savoir si c'est la corrent "style".

L'idée est d'utiliser les 3 premiers bits ici pour stocker les autorisations du premier groupe, puis utilisez le prochain de trois bits pour le deuxième groupe, et ainsi de suite.
Donc ma question est maintenant de savoir si c'est une bonne voie ou pas, ou ce qui serait mieux?

public class Test {
    private int permissions = 0;

    /**
     * The amount of permissions, currently: {@link #BREAK}, {@link #BUILD}, {@link #INTERACT}
     */
    private static final int PERMISSIONS = 3;
    /**
     * The different permissions
     */
    public static final int BUILD = 1, BREAK = 2, INTERACT = 4;
    /**
     * The different groups
     */
    public static final int ALLIANCE = 0, OUTSIDERS = 1;

    public void setPermissions(int permissions, int group)
    {
        this.permissions = permissions << group * PERMISSIONS;
    }

    public void addPermissions(int permission, int group)
    {
        setPermissions(this.permissions | permission, group);
    }

    public boolean hasPermission(int permission, int group)
    {
        return (permissions & permission << group * PERMISSIONS) == permission;
    }
}

EDIT: je veux utiliser le moins de mémoire possible car je vais avoir besoin de stocker beaucoup de données.

EDIT: j'ai aussi besoin de le stocker dans une base de données sql, mais il ne faut pas faire de probs.

OriginalL'auteur maxammann | 2013-01-11