4-1. (2)Lambda(ランダ食品)


☆関数インタフェース=>抽象メソッドのみを宣言するインタフェース
(1)関数インタフェース1=>戻り値がなくパラメータがない抽象メソッド宣言
// @ Func- 안붙으면 메서드가 여러개 가능하지만, 
//붙은 경우는 함수적 메서드면 추상메서드 1개
@FunctionalInterface 
public interface LambdaTestInterface1 {
	public void test();

}
(2)関数インタフェース2=>戻り値がなく、パラメータを持つ抽象メソッド宣言
@FunctionalInterface
interface LambdaTestInterface2{
	public void test(int a);
	
}
(3)関数インタフェース3=>戻り値とパラメータを持つ抽象メソッド宣言
@FunctionalInterface
interface LambdaTestInterface3{
	public int test(int a, int b);
	
}
☆上記3つのインタフェースを使用する主な方法
☆ラムダ式を使用していない場合は、インタフェースからオブジェクトを作成することもできます
☆デメリット:クラスではないため、インタフェースを使用してオブジェクトを作成し、上書きを続行する必要があります.
public class T02_LambdaTest {
	public static void main(String[] args) {
		LambdaTestInterface1 lam1 = new LambdaTestInterface1() { // 
			
			@Override
			public void test() {
				System.out.println("안녕하세요");
				System.out.println("익명구현 객체 방식입니다.");
			}
		};
		
		lam1.test(); //메서드 호출
☆青茶の扱い方
		LambdaTestInterface1 lam2 = ()-> 
			System.out.println("반가워요\n람다식으로 처리하는 방식입니다.");
		
		lam2.test(); //메서드 호출
		
		System.out.println("----------------------------------------------");
☆ラムティーの作り方
☆基本フォーマット)(資料型名称パラメータ名,...->{実行文;...}
  • パラメータの「資料型名称」は省略できます.
    例)(int a)->System.out.println(a);}
    (a) -> {System.out.println(a);}
  • パラメータの場合は、カッコ()を省略できます.
    (「データ型名」を指定した場合、カッコは省略できません.)
    例)a->{System.out.println(a);}
  • 「実行文」がある場合は、「{}」を省略できます.
    (セミコロン(;))
    例)a->システム.out.println(a)
  • 1つの
  • パラメータがなければ括弧"()を省略できません.
    例)()->システム.out.println(a)

  • 戻り値がある場合はreturnコマンドを使用します.
    はい)(a,b)->a+bを返します.
    (a,b) -> return a+b;

  • 文returnのみを実行する場合は、returnコマンドと{}を省略できます.
    例)(a,b)->a+b
  • 		LambdaTestInterface2 lam3 =
    				(int z) ->{ // 파라미터 1개
    					int result = z+100;
    					System.out.println("result = "+result); //130
    				};
    		lam3.test(30);
    		---------------------------------------------------------------------
            
    		LambdaTestInterface2 lam4 =
    				 z -> { // z가 60 (int z) -> 매개변수 1개일때 생략 가능
    					int result = z+300;
    					System.out.println("result = "+result);//360
    				};
    		lam4.test(60);		
    		---------------------------------------------------------------------
            
    		LambdaTestInterface2 lam5 =
    				z -> System.out.println("result ="+ (z+500));//590
    		lam5.test(90);//z가 90		
    
    		--------------------------------------------------------------------
    		
    		LambdaTestInterface3 lam6 =
    				(int x, int y)->{ //(x,y)로 생략 가능
    					int r = x+y;
    					return r;
    				};
    		int k = lam6.test(20, 50);
    		System.out.println("k = "+ k); //70
    	        ------------------------------------------------------------------
    		
    		LambdaTestInterface3 lam7 =
    				(x,y) -> {//(int x, int y)로 생략가능
    					return x+y;	
    				};
    		k = lam7.test(80, 50);
    		System.out.println("k = "+ k); //130
    	        ------------------------------------------------------------------
    		
    		LambdaTestInterface3 lam8 =
    				(x,y) -> x + y; // return 생략
    		k= lam8.test(100, 200);
    		System.out.println("k = "+ k);//300
    		---------------------------------------------------------------------
            
    		LambdaTestInterface3 lam9 =
    				(x,y) -> {return x >y ? x:y;}; // 삼항 연산자 x >y ? x:y; 요러캐 생략가능
    		k = lam9.test(100, 200);
    		System.out.println("k = "+ k);//200
    	}
    }