嘿嘿,我有一个关于位掩码的问题。我现在知道它们是什么以及它们可以在哪里使用。 我想要为特定的组存储特定权限,例如BUILD、BREAK和INTERACT,也可能是更多。下面的代码应该可以做到这一点,但我不确定这是否是正确的“风格”。
这个想法是在这里使用前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数据库中,但不应该出现问题。
long
中,而且易于操作且不易出错。 - Petr Janeček