从枚举获取用户角色值

时间:2020-06-22 22:53:42

标签: java

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

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()时,我总是得到NPE。你知道我该如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

在使用filter之前,应使用map删除所有空值。

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