4-1. (2)Lambda(ランダ食品)
☆関数インタフェース=>抽象メソッドのみを宣言するインタフェース
(1)関数インタフェース1=>戻り値がなくパラメータがない抽象メソッド宣言
☆ラムダ式を使用していない場合は、インタフェースからオブジェクトを作成することもできます
☆デメリット:クラスではないため、インタフェースを使用してオブジェクトを作成し、上書きを続行する必要があります.
☆基本フォーマット)(資料型名称パラメータ名,...->{実行文;...}パラメータの「資料型名称」は省略できます.
例)(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
(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)
例)()->システム.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
}
}
Reference
この問題について(4-1. (2)Lambda(ランダ食品)), 我々は、より多くの情報をここで見つけました https://velog.io/@zhyun1220/4.-2-Lambda-람다식テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol