ラムダ式について
汚いメモ
public static void main(String[] args) {
Runnable runner = new Runnnable() { // ←ローカルクラスとして宣言していない
@Override
public void run() {
System.out.println("Hello World !");
}
}
}public static void main(String[] args) {
Runnable ruuner = () -> { System.out.println("Hello World!"); };
ruuner.run;
}
// 変数runnerの型Runner(インターフェース)の具象クラスがruunerに代入される。
// {}の中身はrunメソッドの実装内容。public static void main(String[] args) {
method(()->{System.out.println("Hello World!");});
}
// methodの引数rの型がRunnable(インターフェース)であることから型推論し、その具象クラスを生成している
public static void method(Ruunable r) {
r.run();
}@Bean
public SecurityFilterChain securityFilterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests(auth -> auth
.requestMatchers("/hello").permitAll());
return http.build();
}
// authorizeHttpRequestsメソッドの引数の型は〇〇より、型推論によって〇〇インターフェースの具象クラスが生成される。
// Customizerインターフェース。メソッドはcustomize()
// Customizerインターフェースのcustomizeメソッドの実装が(auth -> auth.requestMatchers("/hello").permitAll())
// 引数に渡すのは AuthorizeHttpRequestsConfigurer<HttpSecurity>.AuthorizationManagerRequestMatcherRegistry
// 引数にauthを渡し、customizeメソッド内でそれをカスタマイズしていくイメージか?
// 〇〇インターフェースの□□メソッドの実装部分がauth -> auth.requestMatchers("/hello").permitAll()である。