gpt4 book ai didi

java - 如何在 java 中将 UnmodifyingRandomAccessList 设置为 Set
转载 作者:行者123 更新时间:2023-12-02 01:36:55 27 4
gpt4 key购买 nike

有一个包含用户权限的 Oauth2Authentication 对象。当我想获取它的权限并将其设置为 User 对象的权限时,如下所示:

OAuth2Authentication oAuth2Authentication = (OAuth2Authentication) SecurityContextHolder.getContext().getAuthentication();

LinkedHashMap linkedHashMap = (LinkedHashMap) oAuth2Authentication.getUserAuthentication().getDetails();


user.setAuthorities((Set<GrantedAuthority>) oAuth2Authentication.getAuthorities());

引发以下异常:

java.lang.ClassCastException: java.util.Collections$UnmodifiableRandomAccessList cannot be cast to java.util.Set

如何修复它?

注意:
用户权限对象的类型为Set<GrantedAuthority>

最佳答案

如果oAuth2Authentication.getAuthorities()是一个List,您可以轻松地从中创建一个Set:

user.setAuthorities(new HashSet<GrantedAuthority>(oAuth2Authentication.getAuthorities()));

请注意,GrantedAuthority 应该具有 hashCode()equals() 的正确实现,以便用作哈希集

关于java - 如何在 java 中将 UnmodifyingRandomAccessList 设置为 Set<Object>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55103746/

27 4 0