转换列表<权限>至 Collection在Spring安全中

发布于 2024-12-09 04:11:38 字数 907 浏览 0 评论 0原文

我的情况是,我有一个接受 Collection 的方法,并且我将值作为列表 当我尝试将列表值添加到集合参数中时它不起作用,所以我应该转换它吗?

更新: 当我尝试创建:

new org.springframework.security.core.userdetails.User(
                user.getEmail(), user.getPassword(), true, true, true, true,
                user.getAuthorities());

其中 user.getAuthorities() 返回我定义的 Authority 对象的数组列表时,

上面的代码给出了构造函数未定义的错误,当我添加集合强制转换它时工作正常。

org.springframework.security.core.userdetails
类用户

构造函数

User(java.lang.String username, java.lang.String password, 
boolean enabled, boolean accountNonExpired, 
boolean credentialsNonExpired, boolean accountNonLocked, 
java.util.Collection<? extends GrantedAuthority> authorities) 

My case is that i have a method that takes Collection and i have the value as a list
when i tried to add the list value into collection parameter it doesn't work, so should i cast it ?

UPDATE:
when i tried to create:

new org.springframework.security.core.userdetails.User(
                user.getEmail(), user.getPassword(), true, true, true, true,
                user.getAuthorities());

where user.getAuthorities() returns an arraylist of my defined Authority object

above code gives error that the constructor is undefined, when i add collection casting it works fine.

org.springframework.security.core.userdetails
Class User

Constructor

User(java.lang.String username, java.lang.String password, 
boolean enabled, boolean accountNonExpired, 
boolean credentialsNonExpired, boolean accountNonLocked, 
java.util.Collection<? extends GrantedAuthority> authorities) 

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦屿孤独相伴 2024-12-16 04:11:38

User 构造函数的 javadoc 告诉您最后一个参数必须是 Collection。因此,如果 ArrayList 是 ArrayList,其中 SomethingGrantedAuthority 或实现 GrantedAuthority< 的类,则您的 ArrayList 将被接受/代码>。

您还没有告诉我们 user.getAuthorities() 方法返回的确切类型是什么。你了解泛型吗?您读过有关泛型的 Java 教程吗?

The javadoc of the User constructor tells you that the last argument must be a Collection<? extends GrantedAuthority>. So, you ArrayList will be accepted if it's an ArrayList<Something>, where Something is GrantedAuthority or a class which implements GrantedAuthority.

You still haven't told us what was the exact type returned by the method user.getAuthorities(). Do you understand Generics? Have you read the Java tutorial about generics?

戏蝶舞 2024-12-16 04:11:38

List 已经是一个Collection,因为它是Collection 的子接口。

如果您有一个实现List 类型的变量(例如ArrayList),则可以在任何需要Collection 的地方使用它。不需要转换,甚至不需要显式类型转换。

A List already is a Collection since it's a sub-interface of Collection.

If you have a variable of type implementing List (e.g. ArrayList), you can use it anywhere a Collection is expected. No conversion will be necessary, not even an explicit type cast.

各空 2024-12-16 04:11:38
Collection<SomeClass> collection = list; //Where list is a List<SomeClass>

不过List已经是集合了,所以实际上不需要转换。

Collection<SomeClass> collection = list; //Where list is a List<SomeClass>

However, List already is collection, so actually no conversion is required.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文