这是一种方法:
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return List.of(() -> "read");
}
我对lambda表达式的理解很差,“expression”部分必须返回一个值,在这种情况下,它必须是字符串
So<代码>()-
既然如此,为什么要用lambda表达式呢?
为什么不直接列出。“已读”?
GrantedAuthority是Spring Security Core的一个功能接口,用于表示用户的权限。
术语函数接口表示只有一个抽象方法-getAuthority()
,该签名不会与对象类定义的方法冲突。
由于GrantedAuthority是一个函数接口,因此可以使用lambda表达式或方法引用来实现它。
而实现接口实际上意味着提供其抽象行为的实现。
/code具有以下定义:
java.lang.String getAuthority()
因此,表示授权的对象应该能够通过提供字符串(本身不应该是字符串)来响应方法调用。
这就是lambda所做的:
GrantedAuthority authority = () -> "read";
它创建了一个类型为Grant
的对象,当对其调用方法getAuthor()
时,该对象能够使用字符串进行响应。
方法返回的结果必须是授予权限对象的集合(扩展授予权限
表示授予权限的子类型,即其任何实现)而不是字符串的集合。
有关lambda表达式的详细信息,请参阅Oracle提供的本教程
这就是区别:
<代码>()-
这相当于你可以吃的真正的面包。
一个是制作东西的配方,一个是东西。在这种情况下,食谱真的非常愚蠢。这有点像一杯水和一份水的配方之间的区别(这只是:打开水龙头,一个内衬),可能有点难以看出区别,但不要说这里的配方有多简单——想想配方和实际食物之间的区别。
至关重要的是,如果任务是给你一块蛋糕,那一定有蛋糕。这很复杂,我需要去一家商店,它需要保持凉爽,这里正好有一个。我不能神奇地复制蛋糕。
与蛋糕配方相比,蛋糕配方可以有0个,运输配方很便宜,它们不需要冷藏,也不会过期。我们也可以根据需要制作尽可能多的蛋糕。包括0,如果我们不想做一个的话。
同样,这个“配方”的极端简单性使得这种区别很难“看到”:在堆中拥有一个字符串文字并不昂贵,它们也不难维护。在许多方面,它实际上比配方更简单。尽管如此,原则是这样的:Granted授权的这种特殊实现是微不足道的,而使用配方的繁琐程序似乎很愚蠢。但也许GrantedAuth有不同的实现,它会检查一些身份验证服务器,甚至可能要求用户输入密码。
这种交易意味着你非常想返回一个配方,而不是实际的权限:授权需要在必要时进行检查(现在还没有),如果我们一开始根本不需要密码,就不要要求密码。
正如您所说,()-
GrantedAuthority是功能对象接口,而不是字符串。
它有一个返回String的方法getAuthor()
。
您需要列表中的某些内容,以便在以后调用时返回字符串,而不是现在的字符串。
您的代码等效于
return List.of(new GrantedAuthority() {
String getAuthority() {
return "read";
}
});
问题内容: 我在以下正则表达式中找到了它: 它将方括号(及其内容)与嵌套方括号匹配。 问题答案: 是一个字符类,表示除和以外的所有字符。 您可以避免转义和特殊字符,因为它对于PCRE(函数中使用的正则表达式引擎)不是模棱两可的。 由于在PCRE中不正确,因此正则表达式解析的唯一方法是在字符类内部,该字符类稍后将关闭。与以下相同。它不能重新打开字符类内的字符类(POSIX字符类除外)。然后最后一个清
我正在试图理解是什么意思。即使我将其删除,该表达式的工作原理也是一样的,即: 我知道我可以用引用匹配的模式。是什么?
问题内容: 我对以下python表达式很感兴趣: 任务是将2个字典合并为第三个字典,以上表达式可以很好地完成任务。我对运算符及其对表达式的作用很感兴趣。我以为是幂运算符,并且尚未在上面的上下文中看到它。 完整的代码段是这样的: 问题答案: 参数列表中的in有特殊含义,如本教程的4.7节所述。随其传递的字典(或类似字典的)对象被扩展为可调用对象的关键字参数,就像被扩展为单独的位置参数一样。
和?我试着在谷歌上搜索,但没有成功。
问题内容: Java表达式中的双引号是什么意思? 我有: 有人可以解释这些表达式的计算方式,最后一个的目的是什么? 问题答案: 里面的任何东西都会变成。和+ =。例如 你会得到 在你的问题上 将被评估为: