[개발] - 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);
}
}
참고자료
728x90
반응형