![](/img/trans.png)
[英]Understanding “lambda expressions” in Java in the context of “lambda” and “anonymous classes”
[英]Understanding java 8 lambda expressions used to define Spring Security beans
@Bean
public AuthenticationEntryPoint unauthorizedEntryPoint() {
return (request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}
如何理解這個(request, response, authException) ->
,它在哪里找到所有這 3 個變量? 沒有在類領域。
它是什么->
?
AuthenticationEntryPoint
是一個函數式接口(一個只包含一個公共方法的接口: commence
)。 可以使用 Java Lambda 表達式創建功能接口實現。
在 java 8 之前的編程風格中,您可以使用匿名類:
@Bean
public AuthenticationEntryPoint unauthorizedEntryPoint() {
AuthenticationEntryPoint entryPoint = new AuthenticationEntryPoint() {
@Override
public void commence(HttpServletRequest request, HttpServletResponse response,
AuthenticationException authException) throws IOException, ServletException {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
}
};
return entryPoint;
}
在這里,我們創建了一個AuthenticationEntryPoint
匿名類,我們在其中實現了AuthenticationEntryPoint.commence()
的行為。
Java 8 lambda 表達式提供了語法糖來將代碼簡化為:
return (request, response, authException) -> response.sendError(HttpServletResponse.SC_UNAUTHORIZED);
request, response, authException
將在調用時提供給方法。
更多信息: https : //docs.oracle.com/javase/tutorial/java/javaOO/lambdaexpressions.html
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.