目前我学习Springboot。
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
Collection<GrantedAuthority> collection = new ArrayList<GrantedAuthority>();
collection.add(()-> user.getRole().getKey());
return collection;
}
在这个代码中
collection.add(()-> user.getRole().getKey());
我知道这是lambda表达式,但我没有得到原始代码。这不是我的代码。你能让我知道原始代码吗?
lambda表达式有几种类型:
因此,您的案例是第三个。当您没有将参数作为方法参数并返回一个值时使用它。在您的示例中,它只返回user.getRole(). getKey();
的值,并将其添加到集合中
代码很难遵循,因为集合应该是GrantedAuthory
对象的集合。GrantedAuthory
是带有getAuthory()
函数-https://docs.spring.io/spring-security/site/docs/current/api/org/springframework/security/core/GrantedAuthority.html#getAuthority()的单个方法接口
因此,代码在这里要做的是创建一个具有GrantedAuthority
的单个元素集合,其getAuthority
方法返回user的值。getRole()。getKey()
-无论在这个上下文中发生什么。
您可能会发现这里有一个单一用途的类更容易理解:
GrantedAuthority theOneAuthority = new GrantedAuthority() {
String getAuthority() {
return user.getRole().getKey();
}
}
return List.of(theOneAuthority); // a single entry list
然而,要理解上述内容,您需要理解匿名内部类的概念——换句话说,是一种临时类型,其工作是对接口或其他类进行子类化,以执行特定方法希望我们执行的操作。
在这种情况下,lambda是更好的选择。
// as there's only one method, taking 0 parameters and returning string
// then this 0 parameter string-returning lambda can BE a `GrantedAuthority`
GrantedAuthority authFromLambda = () -> user.getRole().getKey();
我有下面的类和对象的ArrayList: 我想要的是从我的列表中得到一个字符串和整数地图,其中包含门票中的目的地和我列表中每个目的地的出现次数。我想它会这样开始,但是我不知道如何继续:
我有一个类似这样的类: null 多谢. 注意:可以有没有管理员的用户,也可以有没有用户的管理员。
正则获取指定字符到下一个大写字符之间的内容
本文向大家介绍如何编写JSP表达式?,包括了如何编写JSP表达式?的使用技巧和注意事项,需要的朋友参考一下 JSP表达式元素包含一种脚本语言表达式,该脚本语言表达式经过评估,转换为String,并插入该表达式出现在JSP文件中的位置。 由于表达式的值已转换为字符串,因此可以在JSP文件的一行文本中使用表达式,无论是否用HTML标记。 expression元素可以包含根据Java语言规范有效的任何表
如何在不包含连续子字符串baa的字母表{a,b,c}上表达正则表达式?
我想得到正则表达式所有可能值的列表。 输入: 其中,W可以是0到9之间的任意数字。i、 e.<代码>W=[0-9] 输出: 我所做的: 我正在使用Java,并决定创建一个整数数组列表。 我创建了一个方法