如何在 java 中将 UnmodifiableRandomAccessList

一个包含用户权限的 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 无法转换为 java.util.Set


我如何解决它?


注意:

用户对象的权限类型是Set<GrantedAuthority>


繁星点点滴滴
浏览 151回答 1
1回答

茅侃侃

如果oAuth2Authentication.getAuthorities()是 a&nbsp;List,您可以轻松地从中创建 a&nbsp;Set:user.setAuthorities(new&nbsp;HashSet<GrantedAuthority>(oAuth2Authentication.getAuthorities()));请注意,GrantedAuthority应该正确实现hashCode()andequals()才能用作 a 的成员HashSet。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java