728x90

람다식

함수형 프로그래밍을 구현하는 방식

클래스 생성이아닌 함수의 호출만으로 기능을 제공한다.

함수형 인터페이스를 생성해서 구현해야한다.  함수형 인터페이스는 메소드를 한 개만 선언해야 한다.

 

함수형 프로그래밍

순수 함수를 구현하고 호출하는 방식. 매개 변수만을 사용하도록 만든 함수라서 외부에 부수적인 영향을 미치지 않는다.

입력 받은 자료를 항상 똑같이 수행하므로, 병렬처리에 유용하고 안정적인 확장성 있는 방식이라고한다.

 

람다식 문법

  • 매개 변수 하나인 경우 괄호 생략가능 ( 두 개인경우는 괄호를 생략할 수 없음)
       str -> {System.out.println(str);}

  • 중괄호 안의 구현부가 한 문장인 경우 중괄호 생략
      str -> System.out.println(str);

  • 중괄호 안의 구현부가 한 문장이라도 return 문은 중괄호를 생략할 수 없음
       str-> return str.length();            //오류

  • 중괄호 안의 구현부가 반환문 하나라면 return과 중괄호를 모두 생략할 수 있음
      (x, y) -> x+y                 // 두 값을 더하여 반환
       str-> str.length()      // 문자열 길이를 반환

함수형 인터페이스

인터페이스 선언 전에 @FunctionalInterface를 붙여준다.

익명 함수와 매개 변수만으로 사용되므로 단 하나만의 메소드를 선언해야한다.

 

package lambda;
@FunctionalInterface
public interface StringConcat {
	public void makeString(String s1, String s2 );
}

함수형 인터페이스 선언부.

package lambda;

public class StringConCatTest {

	public static void main(String[] args) {
		//기존 방식
		StringConcat_2 str2 = new StringConcat_2();
		str2.makeString("hi" , "world");
		
		//람다식 방식
		StringConcat concat = (s , v) -> System.out.println(s + "," + v);
		concat.makeString("Hi", "World");
	}
}

메인 함수에서 람다식 구현 및 사용법

728x90

'프로그래밍 > Java' 카테고리의 다른 글

[Java] 예외(Exception)  (0) 2020.02.08
[Java] 스트림(stream)  (0) 2020.02.06
[Java] 내부 클래스  (0) 2020.02.06
[Java] 컬렉션(Collection) 프레임워크  (0) 2020.02.04
[Java] 제너릭(Generic)  (0) 2020.02.04

+ Recent posts