我有一个具有权利的Enum类。
public enum UserRight {
SYSTEMMANAGEMENT, USERADMINISTRATION, ROLEADMINISTRATION,
STRUCTUREADMINISTRATION, DOCUMENTADMINISTRATION;
}
现在,我想将我所有的权限加载到列表中,除了SYSTEMMANAGEMENT。 我现在是这样的:
availrightslist.addAll(Arrays.asList(UserRight.values()));
在没有SYSTEMMANAGEMENT权限的情况下如何加载所有权限?
答案 0 :(得分:13)
您可以在添加所有内容后将其删除:
availrightslist.remove(UserRight.SYSTEMMANAGEMENT);
或使用一些EnumSet
魔术:
Set<UserRight> rights = EnumSet.complementOf(EnumSet.of(UserRight.SYSTEMMANAGEMENT));
通常,如果您的Collection
中有enum
个,则建议使用EnumSet
。因为两次UserRight
根本没有意义。
答案 1 :(得分:2)
您可以简单地删除不需要的权利。
Collections.addAll(availrightslist, UserRight.values())
availrightslist.remove(UserRight.SYSTEMMANAGEMENT);
或者您只需添加所需的内容。
for(UserRight right : UserRight.values()) {
if(right != UserRight.SYSTEMMANAGEMENT)
availrightslist.add(right);
}
答案 2 :(得分:1)
没有内置的隐藏枚举值的支持,您必须手动将其过滤掉:
List<UserRight> okRights = Arrays.stream(UserRights.values())
.filter(userRight -> userRight != UserRight.SYSTEMMANAGEMENT)
.collect(Collectors.toList());
availablerightslist.addall(okRights);
答案 3 :(得分:-1)
您可以尝试一下,我不确定这是否是最佳解决方案。
Arrays.asList(UserRight.values())
.stream()
.filter(value-> value != UserRight.SYSTEMMANAGEMENT)
.collect(Collectors.toList())