Как установить UnmodifiableRandomAccessList для установки <Object>в Java - PullRequest
0 голосов
/ 11 марта 2019

Существует объект 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>

1 Ответ

2 голосов
/ 11 марта 2019

Если oAuth2Authentication.getAuthorities() является List, вы можете легко создать из него Set:

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

Обратите внимание, что GrantedAuthority должна иметь правильную реализацию hashCode() и equals() для использования в качестве члена HashSet.

...