[개발] - Java/후발대

후발대 16일차 전체 코드

완벽한 장면 2023. 2. 12. 09:11

후발대수업_16.

람다식(Lambda), 함수형 인터페이스

1. 람다 함수(Lambda Function)란?

람다 함수는 함수형 프로그래밍 언어에서 사용되는 개념으로 익명 함수라고도 한다.Java 8 부터 지원되며, 불필요한 코드를 줄이고 가독성을 향상시키는 것을 목적으로 두고있다.

2. 람다 함수의 특징

  • 메소드의 매개변수로 전달될 수 있고, 변수에 저장될 수 있다.즉, 어떤 전달되는 매개변수에 따라서 행위가 결정될 수 있음을 의미한다.
  • 컴파일러 추론에 의지하고 추론이 가능한 코드는 모두 제거해 코드를 간결하게 한다.

3. 람다식 표현

  • 파라미터와 몸체로 구분된다.
  • 파라미터와 몸체 사이에 > 구분을 추가하여 람다식을 완성시킨다.
  • 몸체 부분이 단일 행일 경우 중괄호와 return문을 생략할 수 있다.

( 파라미터 ) -> { 몸체 }

4**. 함수형 인터페이스**

함수형 인터페이스의 조건

  • @FunctionalInterface 어노테이션을 선언해야한다.
  • 추상 메소드가 한개만 선언되어야한다.
  • interface로 선언되어야한다.

 

 

실습 코드

_03_Lambda

package com.sparta.hbd04.prac01.prac15;


public class _03_Lambda {
    public static void main(String[] args) {
     // 람다식
     // (전달값1, 전달값2) -> { 코드 }
    }

//    public void print() {
//        String s = "test";
//        System.out.println(s);
//    }

//    () -> {
//        String s = "test";
//        System.out.println(s);
//    }

//    public void print(String s) {
//        System.out.println(s);
//    }

//    s -> System.out.println(s)

//    public int add(int x, int y) {
//        return x+y;
//    }

//    (x, y) -> x + y

}

 

Convertible

package com.sparta.hbd04.prac01.prac15.converter;

public interface Convertible {
    void convert(int USD);
}

 

KRWConverter

package com.sparta.hbd04.prac01.prac15.converter;

public class KRWConverter implements Convertible{

    @Override
    public void convert(int USD) {
        // 1달러 = 1200원
        System.out.println(USD + " 달러 = " + (USD * 1200) + " 원");
    }
}

 

ConvertibleWithNoParams

package com.sparta.hbd04.prac01.prac15.converter;

@FunctionalInterface
public interface ConvertibleWithNoParams {
    void convert();
}

 

ConvertibleWithTwoParams

package com.sparta.hbd04.prac01.prac15.converter;

@FunctionalInterface
public interface ConvertibleWithTwoParams {
    void convert(int USD, int KRW);
}

 

ConvertibleWithReturn

package com.sparta.hbd04.prac01.prac15.converter;

@FunctionalInterface
public interface ConvertibleWithReturn {
    int convert(int USD, int KRW);
}

 

_04_FunctionalInterface

package com.sparta.hbd04.prac01.prac15;

import com.sparta.hbd04.prac01.prac15.converter.*;

public class _04_FunctionalInterface {
    public static void main(String[] args) {
        KRWConverter converter = new KRWConverter();
//        converter.convert(2);

//        convertUSD((USD) -> System.out.println(USD + " 달러 = " + (USD * 1200) + 
//" 원"), 1);

        Convertible convertible = (USD) -> System.out.println(USD + " 달러 = " +
 (USD * 1200) + " 원");
        convertUSD(convertible, 2);

        // 전달값이 하나도 없다면?
        ConvertibleWithNoParams c1 = () -> System.out.println("1 달러 = 1200 원");
        c1.convert();

        // 두 줄 이상의 코드가 있다면?
        c1 = () -> {
            int USD = 5;
            int KRW = 1200;
            System.out.println(USD + " 달러 = " + (USD * KRW) + " 원");
        };
        c1.convert();

        // 전달값이 2개인 경우?
        ConvertibleWithTwoParams c2 = (d, w) -> System.out.println(d + " 달러 = " + (d * w) + " 원");
        c2.convert(10,1200);

        // 반환값이 있는 경우?
        ConvertibleWithReturn c3 = (d, w) ->  d * w;
        int result = c3.convert(20, 1200);
        System.out.println("20 달러 = " + result + " 원");
    }

    public static void convertUSD(Convertible converter, int USD) {
        converter.convert(USD);
    }
}

 

참고자료

https://true-bird.tistory.com/84

728x90
반응형