嘿嘿,只是有一个关于位掩码的问题。我想我现在知道它们是什么以及它们可以在哪里使用。我想为特定组存储特定权限,例如 BUILD、BREAK 和 INTERACT,也许更多。下面的代码应该这样做,但我不太确定这是否是正确的“风格”。
想法是在这里使用前 3 位来存储第一组的权限,然后将接下来的 3 位用于第二组,依此类推。所以我现在的问题是这是否是一个好方法或者什么会更好?
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 数据库中,但它不应该产生问题。