我有一个有权利的Enum课程。
public enum UserRight {
SYSTEMMANAGEMENT, USERADMINISTRATION, ROLEADMINISTRATION,
STRUCTUREADMINISTRATION, DOCUMENTADMINISTRATION;
}现在,除了SYSTEMMANAGEMENT之外,我想将所有权限加载到列表中。我现在这样做:
availrightslist.addAll(Arrays.asList(UserRight.values()));如何在没有SYSTEMMANAGEMENT权限的情况下加载所有权限?
发布于 2019-05-09 14:21:08
在添加完所有内容之后,您就可以删除它:
availrightslist.remove(UserRight.SYSTEMMANAGEMENT);或者使用一些EnumSet魔法
Set<UserRight> rights = EnumSet.complementOf(EnumSet.of(UserRight.SYSTEMMANAGEMENT));通常,如果您有一个Collection of enum,则建议使用EnumSet。因为有两次UserRight是没有意义的。
发布于 2019-05-09 14:22:14
你可以简单地删除你不想要的权利。
Collections.addAll(availrightslist, UserRight.values())
availrightslist.remove(UserRight.SYSTEMMANAGEMENT);或者你只需添加你需要的东西。
for(UserRight right : UserRight.values()) {
if(right != UserRight.SYSTEMMANAGEMENT)
availrightslist.add(right);
}发布于 2019-05-09 14:24:18
没有支持隐藏枚举值的构建,您必须手动筛选它:
List<UserRight> okRights = Arrays.stream(UserRights.values())
.filter(userRight -> userRight != UserRight.SYSTEMMANAGEMENT)
.collect(Collectors.toList());
availablerightslist.addall(okRights);https://stackoverflow.com/questions/56061516
复制相似问题