[Java]ram式と関数インタフェース


ランダ式
  • 法は1つの方法で表現される.
  • これは
  • 匿名関数の略です.
  • 関数型インタフェースを実現するためのラム多形式の式.(埋め込みインタフェースによるオブジェクト)
  •         // 익명 함수
            MyInterface myInterface = new MyInterface() {
                @Override
                public void eat() {
                    System.out.println("hello");
                    System.out.println("eating..");
                }
            };
            
    上と下のコードは同じコードです.
    	// 람다식
            MyInterface myInterface = () -> {
                System.out.println("hello");
                System.out.println("eating..");
            };
    ラムダ式は、パラメータ、戻りタイプ、変数であってもよい.
    関数インタフェース
    ランダ式のインタフェースを処理するために.抽象メソッドにはインタフェースが1つしかありません.JAva APIのComparatorRunnableなどは関数型インタフェースである.
    ラムダ式とインタフェースの方法は1対1で接続できる抽象的な方法しか定義されていないからである.(静的メソッドとdefaultメソッドには数の制限はありません.抽象的なメソッドが1つしかない場合は、デフォルトのメソッドがある場合でも関数インタフェースです.)
    @FunctionalInterface
    public interface MyInterface {
    
        void eat(); // abstract 생략 되어 있음. 딱 하나만 존재해야함
    
        static void printName(String name) {
            System.out.println(name);
        }
        
        default void printHello() {
            System.out.println("hello");
        }
    
    }