检查Enum对象是否在另一个Enum对象之后顺序检查?
问题描述:
我有一个枚举,当我选择一个特定的(例如:Rank.MOD
)时,我想对MOD
以上的其他枚举启用特定权限。检查Enum对象是否在另一个Enum对象之后顺序检查?
例如,Bukkit命令需要Rank.MOD
。如果玩家是Rank.ADMIN
,我需要允许执行此命令。
public enum Rank {
STARTER("Starter", 0, false),
PRODUCER("Producer", 20000, false),
DEALER("Dealer", 50000, false),
SMUGGLER("Smuggler", 100000, false),
POLICE("Police", 0, false),
MOD("Mod", 0, true),
ADMIN("Admin", 0, true),
OWNER("Owner", 0, true);
private String rankName;
private int rankCost;
private boolean staff;
Rank(String rankName, int rankCost, boolean staff) {
this.rankName = rankName;
this.staff = staff;
}
public String getName() {
return this.rankName;
}
public int getCost() {
return this.rankCost;
}
public boolean isStaff() {
return this.staff;
}
}
这里是我检查的排名。
if (!PlayerData.get().getRank(this.cmdSender).equals(this.rank.getName())) {
cmdSender.sendMessage(F.parse("Permission", "You need the " +
C.rank("[" + this.rank.getName()+ "]") +
" rank to execute this command."));
return false;
}
答
可以使用枚举类ordinal()
方法将在枚举数组中返回索引,以便例如:
Rank.ADMIN.ordinal() < Rank.OWNER.ordinal() // true
这样,如果他让你可以查看基于所需的权限和别人的等级做他想做的事。假设您将枚举实现中的等级从最低特权级别改为最高特权级别,这将会起作用。
答
有几个选项:
您可以添加到每个排名表或排名,它被允许作为,并检查所需要的等级是否在你的排名列表。
创建单独的权限枚举并使用这些安全检查(类似于上面的一个)
添加一个“安全级别”数量排名,并检查您的排名有排名是否高于所需排名
Lucass想法很有趣,但不允许用于更复杂的层次结构比单干线
只是为了确保我正确地理解你的问题 - 你想办法做到“这个级别或以上“检查? – Deltharis 2014-08-28 11:09:52
没错。 :) – Biskotaki 2014-08-28 11:13:04