ちょっと、ビットマスクについて質問があります。私は今、それらが何であり、どこで使用できるかを知っていると思います。BUILD、BREAK、INTERACTなどの特定の権限を保存したいのですが、特定のグループにはもっと多くの権限を保存したいと思います。以下のコードはこれを行う必要がありますが、これが現在の「スタイル」であるかどうかはよくわかりません。
ここで最初の3ビットを使用して最初のグループのアクセス許可を格納し、次の3ビットを2番目のグループに使用します。だから私の質問は、これが良い方法であるかどうか、または何がより良いでしょうか?
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;
}
}
編集:多くのデータを保存する必要があるため、できるだけ少ないメモリを使用したいと思います。
編集:私もそれをSQLデータベースに保存する必要がありますが、それは問題を起こさないはずです。