반응형
람다식 (Lamda Expression)
- 함수형 프로그래밍 방식
: 자바 8부터 함수형 프로그래밍 방식을 지원하고 이를 람다식이라고 한다.
() -> {System.out.println("람다식");};
(x) -> {System.out.println(x + "<<<");};
x -> {}; - 매개변수가 하나면 ()를 생략할 수 있다.
x -> System.out.println(); - 구현부가 한 줄이라면 {}를 생략할 수 있다.
→ ()안에는 매개변수, {} 안에는 실행할 코드를 적어주면 된다.
람다식을 사용하기 위해 반드시 선행되어야 할 부분은 인터페이스가 만들어져 있어야 한다.
람다식 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | package ch01; public class MainTest { // main 함수 public static void main(String[] args) { // int add(int x, int y); // 1. 인터페이스가 있고 // 2. 어떻게 구현될지 식을 재정의 한다. (람다식으로) IAdd iAdd = (x, y) -> {return x + y;}; System.out.println(iAdd.cal(10, 10)); System.out.println("--------------"); //람다식 정의 IPrint iPrint = (str, token) -> { System.out.println( str + ":" + token);}; //람다식 활용 iPrint.myPrint("람", "다"); System.out.println("--------------"); IPrint2 iPrint2 = () -> {return "람다"; }; String tmp = iPrint2.print(); System.out.println(tmp); // 람다식을 만들기 위해서 선행 조건 및 실행 순서 // 1. 인터페이스가 있어야 한다. // 2. 인터페이스 안에는 반드시 하나의 추상 메서드만 존재해야 한다. // 3. 1, 2 조건을 만족한다면 우리가 필요한 식을 정의할 수 있다. // 4. 3번에서 람다식을 정의하였다면 식을 정의할 때 사용한 인터페이스 타입을 // 이용하고 그 안에 추상 메서드 이름을 사용해서 호출해 사용할 수 있다. // new Thread(()->{}).start(); } // end of main } // end of class // 람다 표현식 만들기 인터페이스 먼저 정의되어야 한다. !!!!!!!!! // 주의점 2, 함수형 인터페이스라고 한다. (단, 인터페이스 안에 추상메서드는 반드시 한개이어야 한다.) // !!! 단 하나의 추상메서드 !!! @FunctionalInterface interface IAdd { int cal(int x, int y); } interface IPrint{ void myPrint(String str, String token); } interface IPrint2{ String print(); } 결과 화면 20 람:다 람다 | cs |
→ 람다 표현식을 만들기 위해서는 반드시 인터페이스가 있어야 한다.
단, 인터페이스 안에 추상메서드는 반드시 하나여야 한다. (@FunctionalInterface)
→ 매개변수가 있는 추상메서드인 경우 람다식 구현부에 return을 해주어야 한다.
람다식 쓰레드 예제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | package ch02; public class MainTest2 { // main 함수 public static void main(String[] args) { //쓰레드 익명 함수 new Thread(new Runnable() { @Override public void run() { for (int i = 0; i < 100; i++) { System.out.println("i : " + i); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } } }).start(); System.out.println("----------------------------"); //쓰레드 람다 표현식 new Thread(() -> { for (int i = 0; i < 100; i++) { System.out.println("i : " + i); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } } }).start(); } // end of main } 결과 화면 ---------------------------- i : 0 i : 0 i : 1 i : 1 i : 2 i : 2 i : 3 i : 3 i : 4 i : 4 i : 5 i : 5 .... | cs |
→ 쓰레드를 사용하면 람다식을 사용하면 더 간결하게 표현할 수 있다.
반응형
'프로그래밍 > Java' 카테고리의 다른 글
Java_어댑터 패턴 (0) | 2023.03.27 |
---|---|
Java_템플릿 메서드 패턴, 싱글톤 패턴, 빌더 패턴 (1) | 2023.03.23 |
Java_소켓(Socket) 통신 (0) | 2023.03.04 |
Java_Input/Output 스트림(Stream) (0) | 2023.03.02 |
Java_컬렉션 프레임워크 (0) | 2023.02.21 |