首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Java中隐藏Enum值?

如何在Java中隐藏Enum值?
EN

Stack Overflow用户
提问于 2019-05-09 14:19:06
回答 3查看 1K关注 0票数 3

我有一个有权利的Enum课程。

代码语言:javascript
复制
public enum UserRight {
    SYSTEMMANAGEMENT, USERADMINISTRATION, ROLEADMINISTRATION, 
    STRUCTUREADMINISTRATION, DOCUMENTADMINISTRATION;
}

现在,除了SYSTEMMANAGEMENT之外,我想将所有权限加载到列表中。我现在这样做:

代码语言:javascript
复制
availrightslist.addAll(Arrays.asList(UserRight.values()));

如何在没有SYSTEMMANAGEMENT权限的情况下加载所有权限?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-05-09 14:21:08

在添加完所有内容之后,您就可以删除它:

代码语言:javascript
复制
availrightslist.remove(UserRight.SYSTEMMANAGEMENT);

或者使用一些EnumSet魔法

代码语言:javascript
复制
Set<UserRight> rights = EnumSet.complementOf(EnumSet.of(UserRight.SYSTEMMANAGEMENT));

通常,如果您有一个Collection of enum,则建议使用EnumSet。因为有两次UserRight是没有意义的。

票数 15
EN

Stack Overflow用户

发布于 2019-05-09 14:22:14

你可以简单地删除你不想要的权利。

代码语言:javascript
复制
Collections.addAll(availrightslist, UserRight.values())
availrightslist.remove(UserRight.SYSTEMMANAGEMENT);

或者你只需添加你需要的东西。

代码语言:javascript
复制
for(UserRight right : UserRight.values()) {
    if(right != UserRight.SYSTEMMANAGEMENT)
        availrightslist.add(right);
}
票数 2
EN

Stack Overflow用户

发布于 2019-05-09 14:24:18

没有支持隐藏枚举值的构建,您必须手动筛选它:

代码语言:javascript
复制
List<UserRight> okRights = Arrays.stream(UserRights.values())
    .filter(userRight -> userRight != UserRight.SYSTEMMANAGEMENT)
    .collect(Collectors.toList());
availablerightslist.addall(okRights);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56061516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档