首页 > 解决方案 > 从 Enum 中获取用户角色值

问题描述

我将此枚举用于可用的用户角色类型:

public enum Role implements GrantedAuthority {
  ROLE_ADMIN, ROLE_CLIENT;

  public String getAuthority() {
    return name();
  }
}

完整代码:Github

但是当我尝试使用此代码转换列表时:

claims.put("auth", roles.stream()
                        .map(s -> new SimpleGrantedAuthority(s.getAuthority()))
                        .filter(Objects::nonNull)
                        .collect(Collectors.toList())
);

当我尝试获取s.getAuthority(). 你知道我该如何解决这个问题吗?

标签: java

解决方案


filter您应该在使用之前删除所有空值map

roles.stream().filter(Objects::nonNull)
              .map(s -> new SimpleGrantedAuthority(s.getAuthority()))
              .collect(Collectors.toList());

推荐阅读